在工作中,我必须制作一个控制台应用程序,它可以联系 Sharepoint 上的 WCF 服务,从列表中提取一些数据并将其与我们的 Microsoft SQL Server 数据库中的一些数据进行比较。
现在,我几乎把它搞定了,但是在尝试提取一些我需要的值时遇到了一些问题。我需要两个不同的值放在同一个对象表示中。为此,我必须根据两个不同Title
的字段条件进行两次相同的查询:
context.Values.Where(i => i.Title.Equals("Flight number:") && surveyIds.Contains(i.Survey.Id) == true).ToList();
context.Values.Where(i => i.Title.Equals("Date") && surveyIds.Contains(i.Survey.Id) == true).ToList();
问题是我不能在没有得到的情况下调用这部分代码NotSupportedException
surveyIds.Contains(i.Survey.Id)
表达式 (([10007].Title == "Flight number:") 和 (value(System.Collections.Generic.List`1[System.Int32]).Contains([10007].Survey.Id) == True )) 不受支持。
在代码的更深处,我创建了另一个列表surveyIds
,其中包含整数并限制我所做的列表搜索,我想将附加到值 ID 的调查(因为它是查找)与我的surveyIds
列表中的那些进行比较.
List<FlightSurveysDataContext.SurveysItem> reports = context.Surveys.Where(i => i.Title.Equals("Quality report - Cleaning") && i.UploadComplete == true).ToList();
List<int> surveyIds = new List<int>();
foreach (SurveysItem item in reports) { surveyIds.Add(item.Id); }
我可以以其他方式做到这一点吗?我想一次性完成的原因是,如果我不限制搜索,则 Collection 只会获得它找到的与标题匹配的前 1,000 个值,并且 Sharepoint 列表目前有超过 200,000 个项目,所以我确信得到我不想要的东西。