Linq使用Iqueriable将包含字符串的列表的逗号分隔字符串

时间:2016-02-09 16:03:53

标签: c# linq asp.net-mvc-4

resultList is an IQueriable<foo>用作具有过滤选项的网格的结果。其中一个过滤器是项目过滤器。

foo.projects是一个字符串,是由逗号分隔的项目组成的字符串 例如:

foo.projects = "project1,project2,project3";

filterProjects是List<string>

使用此代码过滤成功,但由于我使用的是ToList(),因此无法再将resultList用作分页目的

resultList = resultList.Where(x => (x.projects.Split(',').ToList().Intersect(filterProjects).Count() > 0)); 

我的问题是:这可以在将resultList保持为IQueriable(不使用ToList())的情况下完成吗?

1 个答案:

答案 0 :(得分:2)

试试这个

if (search_code.value.toLowerCase() == insert_code.value.toLowerCase()) {

<强>更新

正如Mihai Labo所指出的,这不适用于LINQ to Entities,因为Split()无法转换为商店表达式。

假设过滤器名称没有彼此包含(请参阅注释),那么可以重新设计解决方案(以LINQ to Entities工作)

resultList.Where(x => x.Projects.Split(',').Any(p => filterProjects.Any(fp => fp == p)))