CodeSubCountFl001120Fl002115Fl001110
结果只需要两条
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(); }
