使用LinQ C#从列表集合中删除1项

时间:2014-11-18 20:24:48

标签: c# winforms linq visual-studio

我有下一个List:

1
5
2
1
2
9
1

在这种情况下,我重复了3次。 我需要使用LinQ创建一个表达式,其中您要删除的数字仅指定一次:

示例:

RemoveItem(1), Result:
    1
    5
    2
    1
    2
    9

包含linq的函数只删除1项而不是全部。

我听说过。删除所有,但我删除了所有副本,我只需删除一个。

1 个答案:

答案 0 :(得分:5)

您可以搜索符合条件的First项,并将其删除,如:

List<int> yourList = new List<int> { 1, 5, 2, 1, 2, 9, 1 };
yourList.Remove(yourList.FirstOrDefault(r=> r == 1));

或者简单地说:

yourList.Remove(1);

因为List<T>.Remove将删除第一次出现的指定对象。

(如果您正在处理引用类型列表(类对象),则使用FirstOrDefault会很有用)

这将删除符合条件的第一个项目,因此在首次删除后,您的列表中会留下5, 2, 1, 2, 9, 1

如果要从列表末尾删除项目,请使用RemoveAt,如:

yourList.RemoveAt(yourList.LastIndexOf(1));