我有一个很大的名称/值对列表<>,需要能够找到这个列表中是否存在特定的名称...如果存在则更新该值,如果不存在则创建一个新的名称/值对并且将其添加到我的列表中。
执行此操作的 Lambda 语法是什么?
我试过使用 .Where .DefaultIfEmpty 但它只返回一个空对象,但没有将它附加到我原来的“myList”
myList.Where(x => x.Name == 'some name').DefaultIfEmpty(new myobj(){ Name = 'some name').First().Value = 'some value';
我必须执行这四个多个名称,所以如果我有一个简单的语法就可以让它变得很棒 =)
最佳答案
您可以使用此扩展方法:
public static void UpdateOrAdd(this List<myobj> source,
string name, object value)
{
var obj = source.FirstOrDefault(x => x.Name == name);
if (obj == null)
{
obj = new myobj { Name = name };
source.Add(obj);
}
obj.Value = value;
}
用法:
myList.UpdateOrAdd("some name", "some value");
但是考虑使用字典,正如@Sam 所建议的。
关于c# - 如果 Lambda c# 不存在,则更新属性或创建新元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552180/