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

C# 使用LinQ C从列表集合中删除1项#,c#,winforms,linq,visual-studio,C#,Winforms,Linq,Visual Studio,我有下一个清单: 1 5 2 1 2 9 1 在这种情况下,我将数字1重复三次。 我需要使用LinQ创建一个表达式,其中只指定了一次要删除的数字: 例如: RemoveItem(1), Result: 1 5 2 1 2 9 包含linq的函数仅删除1项而不是全部 我听说过.RemoveAll,但我删除了所有重复项,只需删除一个。您可以先搜索符合条件的项,然后像以下那样删除它: List<int> yourList = new Li

我有下一个清单:

1
5
2
1
2
9
1
在这种情况下,我将数字1重复三次。 我需要使用LinQ创建一个表达式,其中只指定了一次要删除的数字:

例如:

RemoveItem(1), Result:
    1
    5
    2
    1
    2
    9
包含linq的函数仅删除1项而不是全部


我听说过.RemoveAll,但我删除了所有重复项,只需删除一个。

您可以先搜索符合条件的
项,然后像以下那样删除它:

List<int> yourList = new List<int> { 1, 5, 2, 1, 2, 9, 1 };
yourList.Remove(yourList.FirstOrDefault(r=> r == 1));
因为将删除指定对象的第一个引用

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

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

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

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

您如何知道要删除哪个
1
?无论删除什么。使用
RemoveAt
如何?非常感谢您的帮助,您的答案解决了我的问题。
yourList.RemoveAt(yourList.LastIndexOf(1));