gpt4 book ai didi

c# - 如何在 LINQ 中对 2 个不同的序列进行分组?

转载 作者:太空宇宙 更新时间:2023-11-03 21:35:18 25 4
gpt4 key购买 nike

如何通过下一个键将两个不同的(第一个 typeof years == IEnumerable<string> 和第二个 typeof occurs = IEnumerable<int> )序列分组为一个序列:if number in occurs相同,则按 years 排序, 否则按 occurs 排序仅使用 LINQ

我通过以下方式获得了这些序列:

var years  = some_strings.Select(x => x.Split(' ')[1]);
var occurs = years.Select(x => years.Count(e => e == x));

所以变量years仅包含带有年份和 occurs 的字符串包含第一个序列中相同年份的计数。

我无法理解 LINQ 中的这些技巧.

我会做这样的事情吗?

occurs.GroupBy(x => x ???

我应该在哪里使用第二个序列?也许我可以在 1 个查询中获取这些序列,然后对其进行处理?

UPD

我使用匿名类(?)修改了 1 中的 2 个查询:

    some_strings.Select(x => x.Split(' ')[1]).
GroupBy(x => x).
Select(x => new {num = x.Key, count = x.Count() })

所以,有年份,并且两者都出现在里面。

我正在尝试获取下一个字符串:

1 1990
1 1991
1 1992
2 1967
2 1968
5 2010
...

现在,有了需要的值的查询,我怎样才能像前面的子句一样对它进行排序?

最佳答案

你很接近。这应该会为您提供类似于最新更新的字符串列表:

var occurences
= years.GroupBy(x => x)
.Select(x => new { Year = int.Parse(x.Key), Count = x.Count() })
.OrderBy(x => x.Count)
.ThenBy(x => x.Year)
.Select(x => string.Concat(x.Count, " ", x.Year))
.ToList();

使用您创建的匿名类型,您可以:

  • 按数量排序
  • 然后按年
  • 最后使用 string.Concat 创建一个字符串列表

(请注意 int.Parse 如果您在 years 中的任何字符串实际上不是数字,将抛出异常)

关于c# - 如何在 LINQ 中对 2 个不同的序列进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22154297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com