(LIST)如果属性匹配替换对象,则添加对象

时间:2014-03-30 09:06:17

标签: c# .net predicate

我正在寻找一种干净有效的方法来查找某个对象属性是否与列表中的对象属性匹配。如果为true则替换它,否则添加它。

我知道如何以多种方式做到这一点。我的.NET方式,首先使用if (list.any(predicate))然后获取对象并更改它的属性或替换整个对象。这样效率很低,因为我正在遍历列表两次。

另一种可能性是手动循环。只需foreach循环列表并检查它的属性,如果找到匹配替换它并突破。这不会是.NET喜欢和“干净”。

我知道的更多,但我不是因为不正确的教导。我很想看看.NET专业人士如何解决这个问题,可能不到3行。

1 个答案:

答案 0 :(得分:0)

也许你可以使用这样的东西:

var element = list.FirstOrDefault(predicate);
if (element == null)
{
    //adding
}
else
{
    //change element properties
}