我有以下列表,如何使用 linq 从给定索引号中删除所有元素:
List<string> a = new List<string>();
a.Add("number1");
a.Add("number2");
a.Add("number3");
如何使用 linq 删除除索引号 = 2 的元素之外的所有元素。
LINQ 不是关于删除东西 - 它是关于查询。
不过,您可以调用RemoveRange
从列表中删除一系列项目。所以:
a.RemoveRange(0, 2);
将只留下“number3”。
或者您可以根据 dasblinkenlight 的回答创建一个新列表。如果您能告诉我们更多关于您想要实现的目标以及您认为 LINQ 是解决方案的原因,我们或许可以为您提供更多帮助。
编辑:好的,现在我们有更明确的要求,您可以使用 LINQ:
var newList = a.Where((value, index) => index != 2)
.ToList();
假设您有要保留的索引列表,您可以使用Where
withindex
进行过滤:
var indexList = new[] {2};
var result = a.Where((s, index) => indexList.Contains(index));
“删除除 X 之外的所有内容”的等效操作是“保留 X”。最简单的方法是在 index 处构造一个包含单个元素的新列表2
,如下所示:
a = new List<string>{a[2]};
尽管@dasblinkenlight 的答案是更好的选择,但这里是 linq(或至少一次迭代)
a.Where((item,index) => b1 == 2);
或返回单个字符串对象而不是 IEnumberable
a.Where((a1,b1) => b1 == 2).First();