【问题标题】:LINQ selecting items from a list and saving their indices from the original list [duplicate]LINQ从列表中选择项目并从原始列表中保存它们的索引[重复]
【发布时间】:2020-11-19 12:12:36
【问题描述】:

我从列表中选择了项目。我如何也从原始列表中保存他们的索引?

var originalList = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 });
var selectedItems = originalList.Where(e => e > 5); // 6, 7, 8, 9, 10, 11, 12, 13

一个例子:

选定项目:

  • (6, 索引 = 5)
  • (7, 索引 = 6)
  • (8, 索引 = 7)
  • 等等...

【问题讨论】:

标签: c# linq


【解决方案1】:

您必须记住索引。可以通过Select重载实现

var selectedItems = originalList
   .Select((e, index) => new { e, index })
   .Where(p => p.e > 5)
   .ToList();

【讨论】:

  • 谢谢!这是正确的。只有一个小错字:应该是(e, index) =&gt; new { e, index })
  • 谢谢,在出租车上回答)
【解决方案2】:

是的,可能

var originalList = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 });
var selectedItems = originalList.Select((e, i) => (e, i))
                                .Where(x => x.e > 5)
                                .Select(x => $"({x.e} , index = {x.i})") ;

【讨论】:

  • 我希望他们的索引在originalList,而不是selectedItems
  • @nop,明白了。我们只需要在更新帖子的位置之前移动选择
  • 好的,谢谢!这样就可以了
猜你喜欢
  • 2014-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多