我有下一个List:
1
5
2
1
2
9
1
在这种情况下,我重复了3次。 我需要使用LinQ创建一个表达式,其中您要删除的数字仅指定一次:
示例:
RemoveItem(1), Result:
1
5
2
1
2
9
包含linq的函数只删除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));