C# 如何使用Lambda语法从列表中删除

C# 如何使用Lambda语法从列表中删除,c#,list,lambda,C#,List,Lambda,鉴于: 列表名称=新列表()//名单 public void RemoveName(字符串名称){ 列表n=名称。其中(x=>x.UserName==名称);; 名称。删除(n); } 执行删除的Lambda语法是什么 如果该功能是否已删除,我如何获得“成功”的指示 List<Name> names = new List<Name>(); //list full of names public void RemoveName(string name) { Lis

鉴于:

列表名称=新列表()//名单
public void RemoveName(字符串名称){
列表n=名称。其中(x=>x.UserName==名称);;
名称。删除(n);
}
执行删除的Lambda语法是什么

如果该功能是否已删除,我如何获得“成功”的指示

List<Name> names = new List<Name>(); //list full of names

public void RemoveName(string name) {
   List<Name> n = names.Where(x => x.UserName == name);;
   names.Remove(n);
}
请注意,lambda语法所做的只是提供一个
谓词
;lambda语法与lambda的最终用途完全无关

或对于单个匹配(请参见注释):

或:


我只想删除一个名字,那就是being send asargu@darko它只会删除那些匹配的;然而。。。我会添加一个单一删除编辑…吹毛求疵,但完整性;以上所有操作都将在列表中插入空值。如果有可能,您需要在lambda中进行空检查。如果函数确实删除了或没有删除,如何获得“成功”的指示?
名称。查找
/
名称。删除
方法比基于索引的方法慢,平均需要1.5次遍历列表,而不是1次。最好将两者中速度较快的放在第一位,并提及另一种选择的减速。在这种情况下,更快的方法没有缺点。如果函数确实删除或未删除,我如何获得“成功”的指示?name.remove(n)如果成功删除项,则返回://true;否则,错误。如果在中未找到项,此方法也//返回false
names.RemoveAll(x => x.UserName == name);
var found = names.Find(x => x.UserName == name);
if(found != null) names.Remove(found);
var index = names.FindIndex(x => x.UserName == name);
if(index >= 0) names.RemoveAt(index);
var n = names.SingleOrDefault(x => x.UserName == name)
if(n != null && n.UserName.length > 0)
{
 names.Remove(n);
}
var n= names.Where(x => x.UserName == name).First();
names.Remove(n)