c# - 如果 Lambda c# 不存在,则更新属性或创建新元素

标签 c# .net lambda

我有一个很大的名称/值对列表<>,需要能够找到这个列表中是否存在特定的名称...如果存在则更新该值,如果不存在则创建一个新的名称/值对并且将其添加到我的列表中。

执行此操作的 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/

相关文章:

c# - 为什么我的 Windows 服务不写入我的日志文件?

.net - MEF 导入在 Windows 服务中失败

c++ - 如何避免本地 lambda 影子重载解析?

C++ lambda函数调用纯虚函数

android - 使用 lambda forEach Kotlin 遍历列表

c# - 检查文本中的正负字符串(C# 到 Objective-C )

c# - 为什么退出编辑模式时我的 datagridview 行会被排序?

c# - EF4.4 中每个具体类型 (TPC) 映射的表

.net - 如何检查listView是否为空

c# - ASP.NET-Core项目中的评估错误