C# 如何通过字符串列表筛选IQueryable项

C# 如何通过字符串列表筛选IQueryable项,c#,sql,linq,odata,kendo-asp.net-mvc,C#,Sql,Linq,Odata,Kendo Asp.net Mvc,我使用Odata作为我的服务,将一个类的IQueryable添加到我的剑道网格中。我有一个项目编号的字符串列表,我需要过滤我的一个IQueryable类,以仅显示该字符串列表中的类中的项目编号,并将其保留为IQueryable 我已经尝试使用Contains来过滤列表中的项目编号,但我收到错误消息“不支持方法“Contains”。我还需要将其保留为IQueryable 以下是我正在使用的代码: var service = RetailHelper.GetODataItemService(); v

我使用Odata作为我的服务,将一个类的IQueryable添加到我的剑道网格中。我有一个项目编号的字符串列表,我需要过滤我的一个IQueryable类,以仅显示该字符串列表中的类中的项目编号,并将其保留为IQueryable

我已经尝试使用Contains来过滤列表中的项目编号,但我收到错误消息“不支持方法“Contains”。我还需要将其保留为IQueryable

以下是我正在使用的代码:

var service = RetailHelper.GetODataItemService();
var query = from a in service.ItemAssortment
            where a.Item_Nbr == itemNumber && a.AuditYear == 2018
            select a;
var newQuery = query.ToList();
var queryList = newQuery.Select(x => x.Assortment_Nbr.ToString()).Distinct().ToList();
//queryList now has the List of strings that I want to use as the filter

var itemQuery = from a in service.Items
                select a;
//I now need to filter itemQuery to only include all the Item Numbers that are in queryList. This is where my dilemma is.

var dsq = RetailerHelper.CreateDataServiceQuery<Item>(itemQuery, request);
//The above is where I will enter in the filtered itemQuery
var qor = dsq.IncludeTotalCount().Execute() as QueryOperationResponse<Item>
var result = new DataSoureResult() { Data = qor.ToList(), Total = Convert.ToInt32(qor.TotalCount) };
return result;
var service=RetailHelper.GetODataItemService();
var query=来自服务中的项目组合
其中a.Item_Nbr==itemNumber&&a.AuditYear==2018
选择一个;
var newQuery=query.ToList();
var queryList=newQuery.Select(x=>x.schodment_Nbr.ToString()).Distinct().ToList();
//queryList现在有了我想用作过滤器的字符串列表
var itemQuery=来自服务中的.Items
选择一个;
//我现在需要过滤itemQuery,只包括queryList中的所有项目编号。这就是我的困境所在。
var dsq=RetailerHelper.CreateDataServiceQuery(itemQuery,请求);
//上面是我将在过滤的itemQuery中输入的内容
var qor=dsq.IncludeTotalCount().Execute()作为QueryOperationResponse
var result=newdatasourceresult(){Data=qor.ToList(),Total=Convert.ToInt32(qor.TotalCount)};
返回结果;

您可以从
queryList
而不是
itemQuery
开始:

var filtered = queryList.SelectMany(x=> itemQuery.Where(item => item.Number == x).ToList());
尝试加入

var itemQuery = from a in service.ItemAssortment
                join b in service.Items
                  on b.Number == a.Assortment_Nbr
                where a.Item_Nbr == itemNumber && a.AuditYear == 2018
                select b;

在我看到你的答案之前,我就已经知道我需要什么了,这和你的问题是一样的。