您正在
keylambda表达式中重复使用相同的变量()。
请参阅我有关匿名方法的文章以了解更多详细信息,并且还有许多相关的SO问题:
- LINQ to SQL错误(或非常奇怪的功能)…
- 带委托的局部变量
- C#捕获循环中的变量
- C#获取答案
- 在没有局部变量的情况下以编程方式构建LINQ查询
简单的解决方法是先复制变量:
List<string> keys = FillKeys()foreach (string key in keys){ string copy = key; q = q.Where(c => c.Company.Name.Contains(copy));}


