分组操作符

master
bicijinlian
parent 8f91cbed01
commit 35709cd2e3

@ -1,10 +1,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Xunit;
using LinqStudy;
namespace LinqStudy.Test.LinqToObject
@ -76,7 +73,7 @@ namespace LinqStudy.Test.LinqToObject
}
/// <summary>
/// 重载keySelector comparer
/// 重载2keySelector comparer
/// key是引用类型使用自定义比较器
/// </summary>
[Fact]
@ -91,16 +88,20 @@ namespace LinqStudy.Test.LinqToObject
};
var group = peoples.GroupBy(p=>p.Hometown,new HometownEqualityComparer());
var group = peoples.GroupBy
(
p=>p.Hometown,
new HometownEqualityComparer()
);
var groupFirstNames=group.First().Select(q=>q.Name).ToList();
var actual=group.First().Select(q=>q.Name).ToList();
var expected=new List<string>(){"河南周口人","俺河南周口哩"};
Assert.Equal(expected,groupFirstNames);
Assert.Equal(expected,actual);
}
/// <summary>
/// 重载keySelector elementSelector
/// 重载3keySelector elementSelector
/// key是引用类型使用自定义比较器
/// </summary>
[Fact]
@ -115,15 +116,20 @@ namespace LinqStudy.Test.LinqToObject
};
var group = peoples.GroupBy(p=>p.Id,t=>t.Name).ToList();
var group = peoples.GroupBy
(
p=>p.Id,
t=>t.Name
)
.ToList();
var groupFirstNames=group[2].FirstOrDefault();
var actual=group[2].FirstOrDefault();
var expected="上海松江人";
Assert.Equal(expected,groupFirstNames);
Assert.Equal(expected,actual);
}
/// <summary>
/// 重载keySelector elementSelector comparer
/// 重载4keySelector elementSelector comparer
/// </summary>
[Fact]
public void GroupBy_keySelector_elementSelector_comparer_Test()
@ -137,14 +143,23 @@ namespace LinqStudy.Test.LinqToObject
};
var group = peoples.GroupBy(p=>p.Hometown,t=>t.Name,new HometownEqualityComparer()).ToList();
var group = peoples.GroupBy
(
p=>p.Hometown,
t=>t.Name,
new HometownEqualityComparer()
)
.ToList();
var groupFirstNames=group[2].FirstOrDefault();
var actual=group[2].FirstOrDefault();
var expected="上海松江人";
Assert.Equal(expected,groupFirstNames);
Assert.Equal(expected, actual);
}
/// <summary>
/// 重载5keySelector resultSelector
/// </summary>
[Fact]
public void GroupBy_keySelector_resultSelector_Test()
{
@ -157,12 +172,103 @@ namespace LinqStudy.Test.LinqToObject
};
var group = peoples.GroupBy(p=>p.Id, (key,teacher) => teacher.Select(t=>t.Name)).ToList();
var group = peoples.GroupBy
(
p=>p.Id,
(key,teacher) => teacher.Select(t=>t.Name)
)
.ToList();
var lastGroupItem=group[2].FirstOrDefault();
var expected="上海松江人";
Assert.Equal(expected,lastGroupItem);
}
/// <summary>
/// 重载6keySelector resultSelector
/// </summary>
[Fact]
public void GroupBy_keySelector_resultSelector_comparer_Test()
{
List<Teacher> peoples=new List<Teacher>()
{
new Teacher(){Id=1, Name="河南周口人", Hometown=new Hometown(){Province="河南", City="周口"}},
new Teacher(){Id=1, Name="俺河南周口哩", Hometown=new Hometown(){Province="河南",City="周口"}},
new Teacher(){Id=3, Name="上海宝山人", Hometown=new Hometown(){Province="上海",City="宝山"}},
new Teacher(){Id=4, Name="上海松江人", Hometown=new Hometown(){Province="上海",City="松江"}},
};
var group = peoples.GroupBy
(
p=>p.Hometown,
(key,teacher) => teacher.Select(t=>t.Name),
new HometownEqualityComparer()
)
.ToList();
var lastItem=group[2].FirstOrDefault();
var expected="上海松江人";
Assert.Equal(expected, lastItem);
}
/// <summary>
/// 重载7keySelector elementSelector resultSelector
/// </summary>
[Fact]
public void GroupBy_keySelector_elementSelector_resultSelector_Test()
{
List<Teacher> peoples=new List<Teacher>()
{
new Teacher(){Id=1, Name="河南周口人", Hometown=new Hometown(){Province="河南", City="周口"}},
new Teacher(){Id=1, Name="俺河南周口哩", Hometown=new Hometown(){Province="河南",City="周口"}},
new Teacher(){Id=3, Name="上海宝山人", Hometown=new Hometown(){Province="上海",City="宝山"}},
new Teacher(){Id=4, Name="上海松江人", Hometown=new Hometown(){Province="上海",City="松江"}},
};
var group = peoples.GroupBy
(
p=>p.Hometown.Province+p.Hometown.City,
(teacher)=> new {Id= teacher.Id,name=teacher.Name, Province=teacher.Hometown.Province},
(key, result) => result.Select(q=>q.Province)
)
.ToList();
var groupFirstNames=group[2].FirstOrDefault();
var lastItem=group[2].FirstOrDefault();
var expected="上海松江人";
Assert.Equal(expected,groupFirstNames);
Assert.Equal(expected, lastItem);
}
/// <summary>
/// 重载8keySelector elementSelector resultSelector
/// </summary>
[Fact]
public void GroupBy_keySelector_elementSelector_resultSelector_comparer_Test()
{
List<Teacher> peoples=new List<Teacher>()
{
new Teacher(){Id=1, Name="河南周口人", Hometown=new Hometown(){Province="河南", City="周口"}},
new Teacher(){Id=1, Name="俺河南周口哩", Hometown=new Hometown(){Province="河南",City="周口"}},
new Teacher(){Id=3, Name="上海宝山人", Hometown=new Hometown(){Province="上海",City="宝山"}},
new Teacher(){Id=4, Name="上海松江人", Hometown=new Hometown(){Province="上海",City="松江"}},
};
var group = peoples.GroupBy
(
p=>p.Hometown,
(teacher)=> new {Id= teacher.Id,name=teacher.Name, Province=teacher.Hometown.Province},
(key, result) => result.Select(q=>q.Province),
new HometownEqualityComparer()
)
.ToList();
var lastItem=group[2].FirstOrDefault();
var expected="上海";
Assert.Equal(expected, lastItem);
}
}
}
Loading…
Cancel
Save