【问题标题】:Return updated object value from list of objects从对象列表返回更新的对象值
【发布时间】:2013-07-05 06:57:09
【问题描述】:

您好我有一个对象列表,如果条件匹配其他对象,我想返回更新的对象。 下面是我试过的代码。这是行不通的。 它只是将更新找到的匹配项返回给我。 我也想要那些不匹配列表中的键值而不更新的值。 我们可以这样做吗?

var bindingData = dataSource.Where(x => filesFoundDictionary.Any(y => y.Key == x.FileName)).Select(x => { x.Select = true; return x; }).ToList();

【问题讨论】:

    标签: c# linq linq-to-objects


    【解决方案1】:

    您不应该使用Where,而是将您的条件放在Select 语句中:

    var bindingData = dataSource
        .Select(x =>
        {
            if(filesFoundDictionary.ContainsKey(s.FileName)) 
                x.Select = true;
            return x;
        }).ToList();
    

    【讨论】:

    • 您可以将filesFoundDictionary.Any(y => y.Key == x.FileName) 替换为filesFoundDictionary.ContainsKey(s.FileName),因为这样更有效。第一个是 O(n),而字典方法总是 O(1)。
    • @TimSchmelter 你完全正确!更新了我的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多