[英]Looping through Model Collection and filter a query in asp.net mvc
我的Web应用程序中有一个这样的模型:
class MyClass
{
int ID;
List<AnotherClass> foo {get; set;}
}
class AnotherClass
{
int ID;
string bar;
}
我也有一个由用户给出的过滤字符串列表。
List<string> filter = new List<string> { "foo", "bar" } //as example
我想要的是通过给定的字符串来过滤MyClass
,如下所示:
var result = context.MyClass.Include(mc => mc.foo);
result = result.Where(x => filter.Any(f => f == x.foo.Select(d => d.bar)));
问题是: Select()
返回字符串列表,但我无法将字符串与字符串列表进行比较。
有人知道如何解决此问题吗?
使用Contains
result = result.Where(x => x.foo.Any(i => filter.Contains(i.bar)));
如果要说出来,那就是: 查找结果中的任何一项,如果过滤器列表中存在其任何内部类项目
尝试:
result.Where(item => item.Any(innerItem => filter.Contains(innerItem.bar)))
或使用其他语法:
var output = (from item in result
from innerItem in item.foo
where filter.Contains(innerItem.bar)
select item);
您可能需要简单的Any
和Contains
方法,就可以做到这一点。
result.Where(x => x.foo.Any(f=> filter.Contains(f.bar));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.