我有一些SharePoint列表。我查询一个SharePoint列表并根据我的要求获取某些项目。 现在,我必须查询另一个SharePoint列表并从该列表中获取列表项,但我的列表项应该排除我从上一个查询中获取的项目。
说我的清单有值A,B,C,D和E. 从我的第一个查询,我得到值D和E. 现在我的第二个查询应该只返回A B和C,然后我将这3个项目绑定到下拉列表。
我们如何实现这一目标。 我是Linq或CAML查询的新手。
请帮忙。
SPQuery qry = new SPQuery();
qry.ViewFields = "<FieldRef Name='Counterparty' />";
qry.Query = String.Format(@" <Where>
<Eq>
<FieldRef Name='Fund' />
<Value Type='Lookup'>{0}</Value>
</Eq>
</Where>", SelectedFund);
DataTable FirstDataTable = spList.GetItems(qry).GetDataTable();
SPQuery qry1 = new SPQuery();
qry1.Query =
@" <OrderBy> <FieldRef Name='Title' /> </OrderBy>";
qry1.ViewFields = "<FieldRef Name='Title' />";
DataTable SecondDataTable = spListCP.GetItems(qry1).GetDataTable();
我的secondtable更像是将返回A B C D E F G H值的主表。第一表将返回A b C D. 我在演唱会上表演了E F G H.
PS:我之前的查询是一个返回D和E的CAML查询
此致 Kapil Gosain
答案 0 :(得分:1)
您要找的是Except()运算符
使用它非常简单。
假设你有一个列表“allItems”将A返回给E,列表“excludedItems”返回D和E.
var allItems = from ... //returns A to E
var excludedItems = from ... where x == D || x == E //returns D and E
//output A, B C,
var filteredResult = allitems.Except(excludedItems).ToList();
如果您发布了一些关于如何填充列表并查询它们的代码,我将编辑我的代码以更具体地针对您的个案。
亲切的问候
答案 1 :(得分:0)
试试这个,
public class t
{
public string val { get; set; }
}
public class j
{
public string val { get; set; }
}
public ActionResult Index()
{
var litT = new List<t>();
var litJ = new List<j>();
t objT = new t();
j objJ = new j();
objT.val = objJ.val = "A";
litT.Add(objT);
litJ.Add(objJ);
objT.val = objJ.val = "B";
litT.Add(objT);
litJ.Add(objJ);
objT.val ="C";
litT.Add(objT);
var result = litT.Where(p => p.val != litJ.Select(k => k.val).ToString()).ToList().Distinct();
return View();
}