LInq包含操作员显示设计时错误

时间:2018-11-08 01:05:56

标签: c# linq

我正在尝试使用linq和EF 6.2.0基于另一个集合的内容来过滤一个集合。但是,我收到设计时错误“无法解析方法Contains(string)”。我本可以发誓过去曾经使用过它,但是现在不起作用了。我想念什么?

    private void UpdateCheckListItems(LMUpdateModel model, LoanResponse response)
    {
        var checkListItems = this.appData.LMLoanChecklist.Find(x => x.LMAutoID == model.LMAutoID);

        var codesToUpdate = checkListItems.Where(x => model.CheckListItems.Contains(x.LMCLCode));

       ... other code

    }

1 个答案:

答案 0 :(得分:0)

因此,我回顾了其他一些项目,并找到了我之前实施该项目的示例。通过将要搜索的值加载到List<T>列表中,然后在新列表中添加“包含”来解决该问题。我以为您可以使用复杂列表中的值,但我想不是。

List<string> lmlcCodes = new List<string>();
foreach (var item in model.CheckListItems)
{
    var code = item.LMCLCode;
    lmlcCodes.Add(code);
}

var checkListItems = this.appData.LMLoanChecklist.Find(x => x.LMAutoID == model.LMAutoID).Where(x => lmlcCodes.Contains(x.LMCLCode));

我确实发现,如果我删除了.Contains()并添加了.Any(),那么该语句确实适用于复杂对象。

var checkListItems = this.appData.LMLoanChecklist.Find(x => x.LMAutoID == model.LMAutoID).Where(cl => model.CheckListItems.Any(cl1 => cl1.LMCLCode == cl.LMCLCode)).ToList();