【问题标题】:How can I pair up two items from a list using linq?如何使用 linq 将列表中的两个项目配对?
【发布时间】:2022-12-17 06:12:31
【问题描述】:

我有一个看起来像这样的列表:

List<string> list = new List<string>()
{
  "item1",
  "item2",
  "item3",
  "item4"
 };

我想按照这样配对的方式对项目进行分组:

[("item1", "item2"),("item3", "item4")]

我不介意我返回的是什么类型,如果它是ListIGroupingarrayIEnumberable&lt;Tuple&gt;..我只想将它们配对。我已经通过简单的混淆索引实现了这一点,但我想知道我是否可以用 linq 来做到这一点(我在这里的实际研究对象是什么)

【问题讨论】:

  • 这回答了你的问题了吗? Getting pair-set using LINQ,然后得到所有其他结果。
  • 您还可以使用 select 的重载来使用属性的索引,然后按该索引分组到适用于此答案的“每对项目”的数量。但不是“重复”

标签: c# linq


【解决方案1】:

在 .NET 6 中,您可以使用 LINQ Chunk&lt;TSource&gt;(int size)

IEnumerable<string[]> groups = list.Chunk(2);

【讨论】:

  • //NET framework var zipped = list.Where((, i) => i % 2 == 0).Zip( list.Where((, i) => i % 2 == 1), (a, b) => Tuple.Create(a, b));
  • 你能详细说明一下这个 linq 是如何工作的吗?我注意到 lambda 表达式中缺少一个参数,但仍然......我可以使用更多信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 2011-10-17
相关资源
最近更新 更多