我有一个大的List <> of Name/Value对,需要能够找到此列表中是否存在特定的Name ...如果是,则更新该Value,如果不是则创建一个新的Name/Value对并将其附加到我的列表.
Lambda语法是做什么的?
我曾尝试使用.Where .DefaultIfEmpty,但它只返回一个空对象,但不会将其附加到我原来的'myList'
myList.Where(x => x.Name == 'some name').DefaultIfEmpty(new myobj(){ Name = 'some name').First().Value = 'some value';
Run Code Online (Sandbox Code Playgroud)
我必须这四个多个名称,所以如果我有一个简单的语法,将使它伟大=)
您可以使用此扩展方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
用法:
myList.UpdateOrAdd("some name", "some value");
Run Code Online (Sandbox Code Playgroud)
但是考虑使用字典,就像@Sam建议的那样.
| 归档时间: |
|
| 查看次数: |
2566 次 |
| 最近记录: |