LINQ 在 List<List<string>> 中获取不同的计数/排序

帕特里克

我有一个List<>包含 a List<string>,我需要从 中确定唯一计数List<string,并按计数频率排序。

例子:

  • “a”、“b”、“c”
  • “d”、“e”、“f”
  • “一”,“乙”
  • “a”、“b”、“c”
  • “a”、“b”、“c”
  • “一”,“乙”

这将输出(等级/组合/频率)

  • 1 - "a", "b", "c" - 3
  • 2 - "a", "b" - 2
  • 3 "d", "e", "f" - 1

我可以想出一种蛮力方法,但可以用 LINQ 更优雅地完成吗?据我所知,这并不完全是笛卡尔方法。

谢谢。

NtFreX

您可以编写自己的文件IEqualityComparer并将其与GroupBy.

public class StringArrayValueComparer : IEqualityComparer<List<string>>
{
    public bool Equals(List<string> x, List<string> y)
        => x.SequenceEqual(y);

    public int GetHashCode(List<string> obj)
        => obj.Aggregate(1, (current, s) => current * 31 + s.GetHashCode());
}

var list = new List<List<string>>(new[]
{
    new List<string>(new [] { "a", "b", "c" }),
    new List<string>(new [] { "d", "e", "f" }),
    new List<string>(new [] { "a", "b" }),
    new List<string>(new [] { "a", "b", "c" }),
    new List<string>(new [] { "a", "b", "c" }),
    new List<string>(new [] { "a", "b" })
});

var orderedList = list
    .GroupBy(x => x, x => x, (x, enumerable) => new { Key = x, Count = enumerable.Count()}, new StringArrayValueComparer())
    .OrderByDescending(x => x.Count)
    .Select((x, index) => new { Rank = index + 1, Combination = x.Key, Frequency = x.Count });

foreach (var entry in orderedList)
{
    Console.WriteLine($"{entry.Rank} - {string.Join(",", entry.Combination)} - {entry.Frequency}");
}

1 - a,b,c - 3

2 - a,b - 2

3 - d,e,f - 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

LINQ从List <List <string >>获取List <string>以及任何

来自分类Dev

如何使用LINQ从List <string> []获取数据

来自分类Dev

使用Linq查询List <List <string >>

来自分类Dev

Linq- 获取具有 list<string> 属性的 main,其中 list<string> 包含字符串

来自分类Dev

在scala中打印List [List [List [String]]]

来自分类Dev

使用LinQ进行C#List <List <string >>过滤

来自分类Dev

如何对 List<string> 中的 2 个不同规则进行排序

来自分类Dev

LINQ与基于List属性的相应计数不同

来自分类Dev

如何使用linq解析字典列表(List <Dictionary <string,string >>)

来自分类Dev

List和List <String>有何不同?

来自分类Dev

linq确定是否在list <Class>的选择字段中找到list <string>中的字段名称

来自分类Dev

从List <List <string >>获取相同的发票

来自分类Dev

LINQ查询将返回的值限制为List <String>中匹配的值

来自分类Dev

LINQ检查数据库列的值是否在List <string>中

来自分类Dev

LINQ查询后无法获取对象的List <>

来自分类Dev

从 Dictionary<int,List<Tuple<string,object>>> 到 Dictionary<int,List<Tuple<string,object,AnEnum>>> 使用 LINQ

来自分类Dev

从Linq查询返回List <string>返回查询语法而不是值

来自分类Dev

使用Linq将List <String>与重复信息进行比较

来自分类Dev

C#LINQ更新项目List <string>

来自分类Dev

List <string>的LINQ过滤器的语法是什么?

来自分类Dev

LINQ方法可用于从List <string>中提取单个元素?

来自分类Dev

使用linq C#更新List <string>值

来自分类Dev

使用Linq将List <String>与重复信息进行比较

来自分类Dev

从Linq查询返回List <string>返回查询语法而不是值

来自分类Dev

C#Linq List <string>占用时间

来自分类Dev

如何在Linq中将List <string>用作实体作为实体?

来自分类Dev

删除linq中list <T>中的列

来自分类Dev

C#中的不同List <string []>

来自分类Dev

在C#中使用LINQ获取List <T>中不同属性值的数量

Related 相关文章

  1. 1

    LINQ从List <List <string >>获取List <string>以及任何

  2. 2

    如何使用LINQ从List <string> []获取数据

  3. 3

    使用Linq查询List <List <string >>

  4. 4

    Linq- 获取具有 list<string> 属性的 main,其中 list<string> 包含字符串

  5. 5

    在scala中打印List [List [List [String]]]

  6. 6

    使用LinQ进行C#List <List <string >>过滤

  7. 7

    如何对 List<string> 中的 2 个不同规则进行排序

  8. 8

    LINQ与基于List属性的相应计数不同

  9. 9

    如何使用linq解析字典列表(List <Dictionary <string,string >>)

  10. 10

    List和List <String>有何不同?

  11. 11

    linq确定是否在list <Class>的选择字段中找到list <string>中的字段名称

  12. 12

    从List <List <string >>获取相同的发票

  13. 13

    LINQ查询将返回的值限制为List <String>中匹配的值

  14. 14

    LINQ检查数据库列的值是否在List <string>中

  15. 15

    LINQ查询后无法获取对象的List <>

  16. 16

    从 Dictionary<int,List<Tuple<string,object>>> 到 Dictionary<int,List<Tuple<string,object,AnEnum>>> 使用 LINQ

  17. 17

    从Linq查询返回List <string>返回查询语法而不是值

  18. 18

    使用Linq将List <String>与重复信息进行比较

  19. 19

    C#LINQ更新项目List <string>

  20. 20

    List <string>的LINQ过滤器的语法是什么?

  21. 21

    LINQ方法可用于从List <string>中提取单个元素?

  22. 22

    使用linq C#更新List <string>值

  23. 23

    使用Linq将List <String>与重复信息进行比较

  24. 24

    从Linq查询返回List <string>返回查询语法而不是值

  25. 25

    C#Linq List <string>占用时间

  26. 26

    如何在Linq中将List <string>用作实体作为实体?

  27. 27

    删除linq中list <T>中的列

  28. 28

    C#中的不同List <string []>

  29. 29

    在C#中使用LINQ获取List <T>中不同属性值的数量

热门标签

归档