如何使用Lambda运算符在具有特定属性的列表中查找对象

本文关键字:属性 列表 对象 查找 Lambda 何使用 运算符 | 更新日期: 2023-09-27 18:11:45

我正在努力理解Lambda运算符。。。这是我目前所掌握的。

我有一个名为record_listList<Record>。我想从具有USER1Record.UserName属性的列表中删除Record

record_list.Remove(record_list.Where(r = r.UserName.ToString() == "USER1"))

显然我误解了什么,但我觉得我很接近。

我得到的错误是:

无法从System.Collections.Generic.IEnumerable<Client_SCM_2.Record>转换为Client_SCM_2.Record

提前感谢您的帮助!

如何使用Lambda运算符在具有特定属性的列表中查找对象

如果存在,请先尝试获取记录,然后将其从列表中删除

var record = record_list.FirstOrDefault(r => r.UserName.ToString() == "USER1");
if(record != null) {
   record_list.Remove(record);
}

以下代码将返回IEnumerable

var User1List = record_list.Where(x => x.UserName.ToString() == "USER1"));

要获取对象,请使用First((或FirstOrDefault((

然后删除记录

var recordToBeDeleted = User1List.FirstOrDefault();
if(recordToBeDeleted != null) //null means no record found
{
    record_list.Remove(recordToBeDeleted )
}

如果要删除所有与谓词匹配的记录,请使用RemoveAll

record_list.RemoveAll(x => x.UserName.ToString() == "USER1");
record_list.RemoveRange(record_list.Where(r => r.UserName.ToString() == "USER1"))

我觉得你需要RemoveRange此外,您还错过了Lambda的a>。

希望这能帮助