|
|
@ -24,18 +24,15 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
{
|
|
|
|
{
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=33 },
|
|
|
|
new Person(){ Id = 3, Name = "张三", Age=33 },
|
|
|
|
new Person(){ Id = 3, Name = "李四", Age=65 },
|
|
|
|
new Person(){ Id = 5, Name = "王五", Age=55 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=17 },
|
|
|
|
new Person(){ Id = 4, Name = "李四", Age=44 },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id);
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id);
|
|
|
|
|
|
|
|
var firtName = oprationItem.First().Name;
|
|
|
|
|
|
|
|
|
|
|
|
var firtId = oprationItem.First().Id;
|
|
|
|
Assert.Equal("张三", firtName);
|
|
|
|
var lastId = oprationItem.Last().Id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(1,firtId);
|
|
|
|
|
|
|
|
Assert.Equal(3, lastId);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
@ -46,21 +43,22 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
{
|
|
|
|
{
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=33 },
|
|
|
|
new Person(){ Id = 3, Name = "张三", Age=33 },
|
|
|
|
new Person(){ Id = 3, Name = "李四", Age=65 },
|
|
|
|
new Person(){ Id = 5, Name = "王五", Age=55 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=17 },
|
|
|
|
new Person(){ Id = 4, Name = "李四", Age=44 },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id);
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id);
|
|
|
|
|
|
|
|
|
|
|
|
var addItem = new Person() { Id = 4, Name = "赵立", Age = 87 };
|
|
|
|
peoples.Insert(0, new Person() { Id = 6, Name = "赵六", Age = 66 });
|
|
|
|
peoples.Add(addItem);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var firtId = oprationItem.First().Id;
|
|
|
|
//执行一次排序
|
|
|
|
var lastId = oprationItem.Last().Id;
|
|
|
|
var firtName = oprationItem.First().Name;
|
|
|
|
|
|
|
|
//再执行一次排序
|
|
|
|
|
|
|
|
var lastName = oprationItem.Last().Name;
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(1, firtId);
|
|
|
|
Assert.Equal("张三", firtName);
|
|
|
|
Assert.Equal(4, lastId);
|
|
|
|
Assert.Equal("王五", lastName);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
@ -124,7 +122,7 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
|
|
|
|
|
|
|
|
var oprationItem = peoples.OrderByDescending(p => p.Id);
|
|
|
|
var oprationItem = peoples.OrderByDescending(p => p.Id);
|
|
|
|
|
|
|
|
|
|
|
|
var addItem = new Person() { Id = 4, Name = "赵立", Age = 87 };
|
|
|
|
var addItem = new Person() { Id = 4, Name = "赵六", Age = 87 };
|
|
|
|
peoples.Add(addItem);
|
|
|
|
peoples.Add(addItem);
|
|
|
|
|
|
|
|
|
|
|
|
var firtId = oprationItem.First().Id;
|
|
|
|
var firtId = oprationItem.First().Id;
|
|
|
@ -169,12 +167,12 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "赵立", Age=11 },
|
|
|
|
new Person(){ Id = 2, Name = "赵六", Age=11 },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//先按Id排序,Id相同的,再按年龄排序。
|
|
|
|
//先按Id排序,Id相同的,再按年龄排序。
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id).ThenBy(p => p.Age).Select(p => p.Name);
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id).ThenBy(p => p.Age).Select(p => p.Name);
|
|
|
|
var expected = new List<string>() { "李四", "张三", "赵立", "王五" };
|
|
|
|
var expected = new List<string>() { "李四", "张三", "赵六", "王五" };
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, oprationItem);
|
|
|
|
Assert.Equal(expected, oprationItem);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -190,7 +188,7 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "赵立", Age=11 },
|
|
|
|
new Person(){ Id = 2, Name = "赵六", Age=11 },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id).ThenBy(p => p.Age);
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id).ThenBy(p => p.Age);
|
|
|
@ -199,7 +197,7 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
peoples.Add(addItme);
|
|
|
|
peoples.Add(addItme);
|
|
|
|
|
|
|
|
|
|
|
|
var actual = oprationItem.Select(p => p.Name).ToList();
|
|
|
|
var actual = oprationItem.Select(p => p.Name).ToList();
|
|
|
|
var expected = new List<string>() { "刘能", "李四", "张三", "赵立", "王五" };
|
|
|
|
var expected = new List<string>() { "刘能", "李四", "张三", "赵六", "王五" };
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -215,13 +213,13 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "赵立", Age=11 },
|
|
|
|
new Person(){ Id = 2, Name = "赵六", Age=11 },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var oprationItem = peoples.OrderBy(p => p, new PersonComparer()).ThenBy(p=>p.Age,Comparer<int>.Default);
|
|
|
|
var oprationItem = peoples.OrderBy(p => p, new PersonComparer()).ThenBy(p => p.Age, Comparer<int>.Default);
|
|
|
|
|
|
|
|
|
|
|
|
var actual = oprationItem.Select(p => p.Name).ToList();
|
|
|
|
var actual = oprationItem.Select(p => p.Name).ToList();
|
|
|
|
var expected = new List<string>() {"李四", "张三", "赵立", "王五" };
|
|
|
|
var expected = new List<string>() { "李四", "张三", "赵六", "王五" };
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -239,12 +237,12 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "赵立", Age=11 },
|
|
|
|
new Person(){ Id = 2, Name = "赵六", Age=11 },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
//先按Id排序,Id相同的,再按年龄排序。
|
|
|
|
//先按Id排序,Id相同的,再按年龄排序。
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id).ThenByDescending(p => p.Age).Select(p => p.Name);
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id).ThenByDescending(p => p.Age).Select(p => p.Name);
|
|
|
|
var expected = new List<string>() {"张三","李四","王五", "赵立"};
|
|
|
|
var expected = new List<string>() { "张三", "李四", "王五", "赵六" };
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, oprationItem);
|
|
|
|
Assert.Equal(expected, oprationItem);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -260,7 +258,7 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "赵立", Age=11 },
|
|
|
|
new Person(){ Id = 2, Name = "赵六", Age=11 },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id).ThenByDescending(p => p.Age);
|
|
|
|
var oprationItem = peoples.OrderBy(p => p.Id).ThenByDescending(p => p.Age);
|
|
|
@ -269,7 +267,7 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
peoples.Add(addItme);
|
|
|
|
peoples.Add(addItme);
|
|
|
|
|
|
|
|
|
|
|
|
var actual = oprationItem.Select(p => p.Name).ToList();
|
|
|
|
var actual = oprationItem.Select(p => p.Name).ToList();
|
|
|
|
var expected = new List<string>() { "张三", "李四", "刘能", "王五","赵立" };
|
|
|
|
var expected = new List<string>() { "张三", "李四", "刘能", "王五", "赵六" };
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -285,16 +283,85 @@ namespace LinqStudy.Test.LinqToObject
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 1, Name = "李四", Age=33 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "王五", Age=22 },
|
|
|
|
new Person(){ Id = 2, Name = "赵立", Age=11 },
|
|
|
|
new Person(){ Id = 2, Name = "赵六", Age=11 },
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
var oprationItem = peoples.OrderBy(p => p, new PersonComparer()).ThenByDescending(p => p.Age, Comparer<int>.Default);
|
|
|
|
var oprationItem = peoples.OrderBy(p => p, new PersonComparer()).ThenByDescending(p => p.Age, Comparer<int>.Default);
|
|
|
|
|
|
|
|
|
|
|
|
var actual = oprationItem.Select(p => p.Name).ToList();
|
|
|
|
var actual = oprationItem.Select(p => p.Name).ToList();
|
|
|
|
var expected = new List<string>() { "张三","李四", "王五", "赵立",};
|
|
|
|
var expected = new List<string>() { "张三", "李四", "王五", "赵六", };
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
Assert.Equal(expected, actual);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Resevse
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Resevse:反序序列(逆向);立即执行
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Resevse_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
|
|
|
|
new Person(){ Id = 2, Name = "李四", Age=33 },
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//简单逆序
|
|
|
|
|
|
|
|
peoples.Reverse();
|
|
|
|
|
|
|
|
var firstId = peoples.First().Id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(2, firstId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Resevse:反序序列(逆向);立即执行
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Resevse_immediately_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=33 },
|
|
|
|
|
|
|
|
new Person(){ Id = 2, Name = "李四", Age=44 },
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//简单逆序
|
|
|
|
|
|
|
|
peoples.Reverse();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
peoples.Add(new Person() { Id = 3, Name = "云花公主", Age = 18 });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//数据源变化,不影响结果。
|
|
|
|
|
|
|
|
var firstId = peoples.First().Id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(2, firstId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// Resevse重载:index开始项,count反序项的数量
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
[Fact]
|
|
|
|
|
|
|
|
public void Resevse_index_count_Test()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
List<Person> peoples = new List<Person>()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
new Person(){ Id = 1, Name = "张三", Age=44 },
|
|
|
|
|
|
|
|
new Person(){ Id = 2, Name = "李四", Age=33 },
|
|
|
|
|
|
|
|
new Person(){ Id = 3, Name = "王五", Age=44 },
|
|
|
|
|
|
|
|
new Person(){ Id = 4, Name = "赵六", Age=33 },
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//从指定位置开始逆序指定数量的项。
|
|
|
|
|
|
|
|
//从序号为1(第2项)开始,反序2项:即反序第2第3两项。
|
|
|
|
|
|
|
|
peoples.Reverse(1, 2);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var secondId = peoples[1].Id;
|
|
|
|
|
|
|
|
var thirdId = peoples[2].Id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Assert.Equal(3, secondId);
|
|
|
|
|
|
|
|
Assert.Equal(2, thirdId);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|