栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用LINQ计算列表中的重复项

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用LINQ计算列表中的重复项

您可以使用“分组依据” +“排序依据”。详细信息请参见LINQ 101

var list = new List<string> {"a", "b", "a", "c", "a", "b"};var q = from x in list        group x by x into g        let count = g.Count()        orderby count descending        select new {Value = g.Key, Count = count};foreach (var x in q){    Console.WriteLine("Value: " + x.Value + " Count: " + x.Count);}

针对 此帖子(现已删除):

如果您有一些自定义对象的列表,则需要使用自定义比较器或按特定属性分组。

查询也无法显示结果。向我们显示完整的代码以获得更好的帮助。

根据您的最新更新:

您具有以下代码行:

group xx by xx into g

由于xx是自定义对象系统,因此不知道如何将一项与另一项进行比较。正如我已经写过的,您需要指导编译器并提供一些将用于对象比较的属性或提供自定义比较器。这是一个例子:

请注意,我使用 Foo.Name 作为键-即将根据 Name 属性的值对对象进行分组。

有一个问题-您根据对象的名称将2个对象视为重复对象,但是Id呢?在我的示例中,我只是获取组中第一个对象的ID。如果您的对象具有不同的ID,则可能是一个问题。

//Using extension methodsvar q = list.GroupBy(x => x.Name) .Select(x => new {Count = x.Count(),         Name = x.Key,         ID = x.First().ID}) .OrderByDescending(x => x.Count);//Using LINQvar q = from x in list        group x by x.Name into g        let count = g.Count()        orderby count descending        select new {Name = g.Key, Count = count, ID = g.First().ID};foreach (var x in q){    Console.WriteLine("Count: " + x.Count + " Name: " + x.Name + " ID: " + x.ID);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395394.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号