Linq使用Lambda表达式实现某列去重

    xiaoxiao2021-03-25  84

    首先,需要的功能是:

    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(); }

    转载请注明原文地址: https://ju.6miu.com/read-25941.html

    最新回复(0)