【问题标题】:Compare two lists and update only if the first list if condition match on second list比较两个列表并仅在第一个列表与第二个列表的条件匹配时更新
【发布时间】:2021-04-03 12:44:25
【问题描述】:

我有 2 个列表(比如 calList 和 checkerList)

  1. 我需要检查 checkerList 是否满足条件
  2. 如果是这样,请更新该 calList 的项目值
  3. 最终的 calList 应该是完整的 calList(无论是否更新)。

我尝试过的:

resultantCalList =  calList .Where(item1 =>
                    checkerList.Any(item2 => 
                        item1.VendorFieldId == item2.Id
                         && item2.VendorId == vendorId 
                         && item2.Sensitive
                         ))
                            .Select(s => {s.Value = 10; return s; })
                            .ToList();

这仅给出更新项目的集合,即 resultantCalList 仅包含其值已更新的项目列表。不匹配的项目不会包含在resultantCalList 中。

您能否给我一个 lambda 查询,该查询提供一个列表,其中包含 calList 中的所有项目,这些项目将具有更新值(如果找到匹配项)和原始值(如果未找到匹配项)?

【问题讨论】:

    标签: c# linq lambda


    【解决方案1】:

    Select 语句中移动Where 子句将避免在使用ToList 返回之前过滤calList 的内容。

    resultantCalList =
        calList.Select(item1 =>
            {
                if (checkerList.Any(item2 =>
                    item1.VendorFieldId == item2.Id
                    && item2.VendorId == vendorId
                    && item2.Sensitive))
                {
                    item1.Value = 10;
                }
    
                return item1;
            })
        .ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多