繁体   English   中英

多个WHERE IN子句LINQ等效

[英]Multiple WHERE IN clause LINQ equivalent

我有一个网页,用户可以在该网页上基于三个不同的多选选择来限制结果(请参见所附图片)。

有点背景。 文件有许多部门,公司和分析员分配给他们。 我的EF对象具有导航属性,这意味着我无需编写显式的JOINS即可获取所需的数据。

我的问题是我无法构造需要获得所需结果的LINQ查询。 使用SQL会很简单,我可以轻松地使用JOINS和WHERE IN的组合('Blah','Another blah')。 在我的控制器中,我有以下代码:

public JsonResult FilterResearch(FilterResearchModel filterResearch)
{
        var db = new Context();

        // home model
        var model = new HomeModel();

        var selectedSectors = from s in db.Sectors
                              where filterResearch.SelectedSectors.Contains(s.Name)
                              select s;

        var selectedCompanies = from c in db.Companies
                              where filterResearch.SelectedCompanies.Contains(c.Name)
                              select c;

        var selectedAnalysts = from a in db.Analysts
                              where filterResearch.SelectedAnalysts.Contains(a.Name)
                              select a;

        var filteredResults = from d in db.Documents
                      where selectedSectors.Contains(d.Sectors)
                      select d;

FilterResearch.Selected“ Something”是字符串数组。 我的“ filteredResults”查询应包含我计划返回的已过滤文档。

编辑有些人对我不清楚的事实发表了评论。 我正在尝试基于3个字符串数组过滤我的文档。 这些字符串数组中的每一个都是“文档”对象中的导航属性。 在客户端上,用户具有三个多选控件,因此每个数组可以具有多个元素。 现在,他们可以选择这三个中的任何一个,并根据需要选择任意多个选项。

这是问题,当我编译它时,出现以下错误:“无法从'System.Linq.IQueryable'转换为'System.Linq.ParallelQuery>”

再次编辑包含错误的图片。 它发生在“ where selectedSectors.Contains(d.Sectors)”上 在此处输入图片说明

我检查过:

运气不好。 有没有一种方法我可以说“根据公司,部门和分析师过滤文档?

也许我误会了这一点(而且我不知道您的完整对象模型),但是以下工作不会做...

    var filteredResults = from d in db.Documents
                         where d.Sectors.Exists(sect => filterResearch.SelectedSectors.Contains(sect.Name))
                            && d.Companies.Exists(comp => filterResearch.SelectedCompanies.Contains(comp.Name))
                            && d.Analysts.Exists(anyst => filterResearch.SelectedAnalysts.Contains(anyst.Name))
                        select d;

编辑:只是要添加,我还没有在Visual Studio中尝试过此操作,因此它可能无法编译。 也许你需要使用的功能除Exists - Any可能-但我敢肯定,你的就是我的思想主旨。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM