Code | Sub | Count |
Fl001 | 1 | 20 |
Fl002 | 1 | 15 |
Fl001 | 1 | 10 |
结果只需要两条
Code:Fl001,Sub:1,Count:20
Code:Fl002,Sub1;Count:15
需要使用Linq进行去重查询,只返回code相同的第一行数据即可,而使用Distinct()根本无法达到要求,那么
var list = con.Table.GroupBy(r => r.Code).Select(r => r.First());实际的意思是根据某一列进行分组,然后获取每一组的第一条数据,可以解决此次需求,实际测试结果:
static void Main(string[] args)
{
using(DataClasses1DataContext con = new DataClasses1DataContext())
{
//去重后
List<SZ_Cost> list1 = con.SZ_Cost.Where(r => r.SubjectIds.ToString() == "1").GroupBy(r => r.StudentCode).Select(r => r.First()).ToList();
//未去重
List<SZ_Cost> list2 = con.SZ_Cost.Where(r => r.SubjectIds.ToString() == "1").ToList();
Console.WriteLine("未去重长度:"+list2.Count);
Console.WriteLine("去重后长度:"+list1.Count);
Console.WriteLine("================未去重的编号们===================");
foreach (SZ_Cost c in list2)
{
Console.Write(c.StudentCode+" | ");
}
Console.WriteLine();
Console.WriteLine("================去重后的编号们===================");
foreach (SZ_Cost c in list1)
{
Console.Write(c.StudentCode + " | ");
}
}
Console.ReadLine();
}
