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

时间:2016-10-05 16:31:12

标签: c# lambda

我正在努力了解Lambda运营商......这就是我到目前为止所做的事情。

我有一个名为List<Record>的{​​{1}}。我想从record_list属性为Record的列表中删除Record.UserName

USER1

显然我误解了一些事情,但我认为我很接近。

我得到的错误是:

  

无法从record_list.Remove(record_list.Where(r = r.UserName.ToString() == "USER1")) 转换为System.Collections.Generic.IEnumerable<Client_SCM_2.Record>

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

下面的代码将返回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");

答案 2 :(得分:0)

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

我知道你需要RemoveRange 另外,你错过了一个&gt;对于Lambda。

希望这有帮助