diff --git a/LinqStudy.Test/LinqToObject/ElementTest.cs b/LinqStudy.Test/LinqToObject/ElementTest.cs
new file mode 100644
index 0000000..3918a6a
--- /dev/null
+++ b/LinqStudy.Test/LinqToObject/ElementTest.cs
@@ -0,0 +1,455 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using Xunit;
+
+namespace LinqStudy.Test.LinqToObject
+{
+ ///
+ /// 元素操作
+ ///
+ public class ElementTest
+ {
+ #region First
+ ///
+ /// First:获取第一个元素,延迟执行。
+ ///
+ [Fact]
+ public void First_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ var queryFrist = peoples.First();
+ var firstItemName = queryFrist.Name;
+
+ Assert.Equal("wanggaofeng", firstItemName);
+ }
+
+ [Fact]
+ public void First_where_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ new Person(){ Id=3, Name="wangwu", Age=44},
+ };
+
+ var queryFrist = peoples.First(q => q.Age > 32);
+ var firstItemName = queryFrist.Name;
+
+ Assert.Equal("wanggaofeng", firstItemName);
+ }
+
+ [Fact]
+ public void First_ArgumentNullException_Test()
+ {
+ List peoples = null;
+
+ Action queryFirstAct = () => peoples.First();
+
+ Assert.Throws(queryFirstAct);
+ }
+
+ ///
+ /// 查不到数据时,异常。
+ ///
+ [Fact]
+ public void First_InvalidOperationException_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ Action queryFrist =() => peoples.First(q => q.Age > 100);
+
+
+ Assert.Throws(queryFrist);
+ }
+ #endregion
+
+ #region FirstOrDefault
+ ///
+ /// FirstOrDefault:获取第一个元素或默认值,延迟执行。
+ ///
+ [Fact]
+ public void FirstOrDefault_Frist()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ var queryFrist = peoples.FirstOrDefault();
+ var firstItemName = queryFrist.Name;
+
+ Assert.Equal("wanggaofeng", firstItemName);
+ }
+
+ [Fact]
+ public void FirstOrDefault_Default()
+ {
+ List peoples = new List();
+
+ var queryFrist = peoples.FirstOrDefault();
+ var firstItem = queryFrist;
+
+ Assert.Null(firstItem);
+ }
+
+ [Fact]
+ public void FirstOrDefault_Where_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ new Person(){ Id=3, Name="wangwu", Age=44},
+ };
+
+ var queryFrist = peoples.FirstOrDefault(q => q.Age > 32);
+ var firstItemName = queryFrist.Name;
+
+ Assert.Equal("wanggaofeng", firstItemName);
+ }
+
+ [Fact]
+ public void FirstOrDefault_ArgumentNullException_Test()
+ {
+ List peoples = null;
+
+ Action queryFirstAct = () => peoples.First();
+
+ Assert.Throws(queryFirstAct);
+ }
+
+ ///
+ /// 查不到数据时,不异常。
+ ///
+ [Fact]
+ public void FirstOrDefault_No_InvalidOperationException()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ var defaultItem = peoples.FirstOrDefault(q => q.Age > 100);
+
+ Assert.Null(defaultItem);
+ }
+ #endregion
+
+ #region Last
+ ///
+ /// First:获取最后一个元素,延迟执行。
+ ///
+ [Fact]
+ public void Last_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ var lastItem = peoples.Last();
+ var lastItemName = lastItem.Name;
+
+ Assert.Equal("lishi", lastItemName);
+ }
+
+ [Fact]
+ public void Last_where_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ new Person(){ Id=3, Name="wangwu", Age=44},
+ };
+
+ var lastItem = peoples.Last(q => q.Age > 32);
+ var lastItemName = lastItem.Name;
+
+ Assert.Equal("wangwu", lastItemName);
+ }
+
+ [Fact]
+ public void Last_ArgumentNullException_Test()
+ {
+ List peoples = null;
+
+ Action queryAction = () => peoples.First();
+
+ Assert.Throws(queryAction);
+ }
+
+ ///
+ /// 查不到数据时,异常。
+ ///
+ [Fact]
+ public void Last_InvalidOperationException_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ Action lastAction = () => peoples.Last(q => q.Age > 100);
+
+ Assert.Throws(lastAction);
+ }
+ #endregion
+
+ #region LastOrDefault
+ ///
+ /// LastOrDefault:获取最后一个元素或默认值,延迟执行。
+ ///
+ [Fact]
+ public void LastOrDefault_Last()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ var queryItem = peoples.LastOrDefault();
+ var lastItemName = queryItem.Name;
+
+ Assert.Equal("lishi", lastItemName);
+ }
+
+ [Fact]
+ public void LastOrDefault_Default()
+ {
+ List peoples = new List();
+
+ var queryItem = peoples.LastOrDefault();
+
+ Assert.Null(queryItem);
+ }
+
+ [Fact]
+ public void LastOrDefault_Where_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ new Person(){ Id=3, Name="wangwu", Age=44},
+ };
+
+ var queryItem = peoples.LastOrDefault(q => q.Age > 32);
+ var lastItemName = queryItem.Name;
+
+ Assert.Equal("wangwu", lastItemName);
+ }
+
+ [Fact]
+ public void LastOrDefault_ArgumentNullException_Test()
+ {
+ List peoples = null;
+
+ Action queryLastItme = () => peoples.LastOrDefault();
+
+ Assert.Throws(queryLastItme);
+ }
+
+ ///
+ /// 查不到数据时,不异常。
+ ///
+ [Fact]
+ public void LastOrDefault_No_InvalidOperationException()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ var defaultItem = peoples.LastOrDefault(q => q.Age > 100);
+
+ Assert.Null(defaultItem);
+ }
+ #endregion
+
+ #region Single
+ ///
+ /// Single:获取单个元素,延迟执行。
+ ///
+ [Fact]
+ public void Single_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33}
+ };
+
+ var queryItem = peoples.Single();
+ var singleName = queryItem.Name;
+
+ Assert.Equal("wanggaofeng", singleName);
+ }
+
+ [Fact]
+ public void Single_where_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ new Person(){ Id=3, Name="wangwu", Age=44},
+ };
+
+ var singleQuery = peoples.Single(q => q.Age > 33);
+ var singleItemName = singleQuery.Name;
+
+ Assert.Equal("wangwu", singleItemName);
+ }
+
+ [Fact]
+ public void Single_ArgumentNullException_Test()
+ {
+ List peoples = null;
+
+ Action singleQueryAction = () => peoples.Single();
+
+ Assert.Throws(singleQueryAction);
+ }
+
+ ///
+ /// 查不到数据时,异常。
+ ///
+ [Fact]
+ public void Single_QueryEmpty_InvalidOperationException()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ Action singleQueryAction = () => peoples.Single(q => q.Age > 100);
+
+
+ Assert.Throws(singleQueryAction);
+ }
+
+ ///
+ /// 查询到多条记录,异常
+ ///
+ [Fact]
+ public void Single_QueryManyItem_InvalidOperationException()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ Action singleQueryAction = () => peoples.Single(q => q.Age > 0);
+
+
+ Assert.Throws(singleQueryAction);
+ }
+ #endregion
+
+ #region SingleOrDefault
+ ///
+ /// SingleOrDefault:获取单个元素或默认值,延迟执行。
+ ///
+ [Fact]
+ public void SingleOrDefault_Last()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33}
+ };
+
+ var queryItem = peoples.SingleOrDefault();
+ var singleItemName = queryItem.Name;
+
+ Assert.Equal("wanggaofeng", singleItemName);
+ }
+
+ [Fact]
+ public void SingleOrDefault_Default()
+ {
+ List peoples = new List();
+
+ var queryItem = peoples.SingleOrDefault();
+
+ Assert.Null(queryItem);
+ }
+
+ [Fact]
+ public void SingleOrDefault_Where_Test()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ new Person(){ Id=3, Name="wangwu", Age=44},
+ };
+
+ var queryItem = peoples.SingleOrDefault(q => q.Id > 2);
+ var sigleItemName = queryItem.Name;
+
+ Assert.Equal("wangwu", sigleItemName);
+ }
+
+ [Fact]
+ public void SingleOrDefault_ArgumentNullException()
+ {
+ List peoples = null;
+
+ Action queryAction = () => peoples.LastOrDefault();
+
+ Assert.Throws(queryAction);
+ }
+
+ ///
+ /// 查询不到数据,不异常
+ ///
+ [Fact]
+ public void SingleOrDefault_QueryEmpty_NoArgumentNullException()
+ {
+ List peoples = new List();
+
+ var queryItme = peoples.SingleOrDefault();
+
+ Assert.Null(queryItme);
+ }
+
+ ///
+ /// 查到多条数据时,异常。
+ ///
+ [Fact]
+ public void SingleOrDefault_No_InvalidOperationException()
+ {
+ List peoples = new List()
+ {
+ new Person(){ Id=1, Name="wanggaofeng", Age=33},
+ new Person(){ Id=2, Name="lishi", Age=32},
+ };
+
+ Action singleOrDefalutAction =() => peoples.SingleOrDefault(q => q.Age > 0);
+
+ Assert.Throws(singleOrDefalutAction);
+ }
+ #endregion
+ }
+}
diff --git a/LinqStudy.Test/LinqToObject/TypeConvertTest.cs b/LinqStudy.Test/LinqToObject/TypeConvertTest.cs
index 349e366..8cd6c0b 100644
--- a/LinqStudy.Test/LinqToObject/TypeConvertTest.cs
+++ b/LinqStudy.Test/LinqToObject/TypeConvertTest.cs
@@ -184,8 +184,6 @@ namespace LinqStudy.Test.LinqToObject
new Person() {Id=2, Name="zhangsan",Age = 25 },
};
- IEqualityComparer equal = new PersonEqual();
-
var dic = persons.ToDictionary(p => p.Id, EqualityComparer.Default);
Assert.Equal("gaofeng", dic[1].Name);
diff --git a/LinqStudy.Test/LinqToObject/WhereTest.cs b/LinqStudy.Test/LinqToObject/WhereTest.cs
index 62703c9..a42d55f 100644
--- a/LinqStudy.Test/LinqToObject/WhereTest.cs
+++ b/LinqStudy.Test/LinqToObject/WhereTest.cs
@@ -1,4 +1,5 @@
-using System;
+<<<<<<< .mine
+using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
@@ -14,6 +15,24 @@ namespace LinqStudy.Test.LinqToObject
public class WhereTest
{
+=======
+using System;
+using System.Linq;
+using System.Collections;
+using System.Collections.Generic;
+
+using Xunit;
+
+namespace LinqStudy.Test.LinqToObject
+{
+
+ ///
+ /// 选件筛选
+ ///
+ public class WhereTest
+ {
+ ///
+>>>>>>> .theirs
[Fact]
public void Where_Test()
{