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

Jon*_*rdo -4 c# linq visual-studio winforms

我有下一个清单:

1
5
2
1
2
9
1
Run Code Online (Sandbox Code Playgroud)

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

例:

RemoveItem(1), Result:
    1
    5
    2
    1
    2
    9
Run Code Online (Sandbox Code Playgroud)

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

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

Hab*_*bib 5

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

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

或者干脆:

yourList.Remove(1);
Run Code Online (Sandbox Code Playgroud)

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

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

这将删除匹配条件的第一个项目,因此在首次删除后,您将5, 2, 1, 2, 9, 1在列表中保留.

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

yourList.RemoveAt(yourList.LastIndexOf(1));
Run Code Online (Sandbox Code Playgroud)