说我有一个documents
像这样的表:
ID DocumentName Name
1 Test1.txt Alan
2 Test2.txt Alan
3 Test3.txt Jane
4 Test4.txt Alan
5 Test5.txt Bob
6 Test6.txt Bob
7 Test7.txt Jane
我想使用LINQ进行筛选,以仅显示该表中的行,并使用列表提供的名称,例如:
List<string> names = new List<string>();
names.Add("Alan");
names.Add("Bob");
应该只显示:
ID DocumentName Name
1 Test1.txt Alan
2 Test2.txt Alan
4 Test4.txt Alan
5 Test5.txt Bob
6 Test6.txt Bob
我尝试过的是:
var filteredDatabase = db.document =
.Where(a => a.Name.Intersect(names).Any());
这不起作用,并且错误显示:
CS1929'字符串'不包含'Intersect'的定义,最佳扩展方法重载'Queryable.Intersect(IQueryable,IEnumerable)'需要类型为'IQueryable'的接收器
我也尝试过:
var filteredDatabase = db.document =
.Where(a => a.Name.Any(x => names.Contains(x));
这也行不通,并且错误显示:
无法从'char'转换为'string'。
知道我在这个地方出错了吗?
Contains
这样工作
var filteredDatabase = db.document.Where(a => names.Contains(a.Name));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句