C# 通过排除另一个数据表中的所有元素来显示数据表中的元素
我有一些SharePoint列表。我查询一个SharePoint列表,并根据需要获取某些项目。 现在我必须查询另一个SharePoint列表并从该列表中获取列表项,但我的列表项应排除我从上一次查询中获取的项目 假设我的列表有值A、B、C、D和E 从我的第一个查询中,我得到了值D和E。 现在,我的第二个查询应该只返回一个B和C,然后我将把这3个项目绑定到一个下拉列表中 我们如何才能做到这一点。 我是Linq或CAML查询的新手 请帮忙C# 通过排除另一个数据表中的所有元素来显示数据表中的元素,c#,linq,list,datatable,C#,Linq,List,Datatable,我有一些SharePoint列表。我查询一个SharePoint列表,并根据需要获取某些项目。 现在我必须查询另一个SharePoint列表并从该列表中获取列表项,但我的列表项应排除我从上一次查询中获取的项目 假设我的列表有值A、B、C、D和E 从我的第一个查询中,我得到了值D和E。 现在,我的第二个查询应该只返回一个B和C,然后我将把这3个项目绑定到一个下拉列表中 我们如何才能做到这一点。 我是Linq或CAML查询的新手 请帮忙 SPQuery qry = new SPQuery();
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();
SPQuery qry=new SPQuery();
qry.ViewFields=“”;
qry.Query=String.Format(@)
{0}
“,选定基金);
DataTable FirstDataTable=spList.GetItems(qry.GetDataTable();
SPQuery qry1=新建SPQuery();
qry1.查询=
@" ";
qry1.ViewFields=“”;
DataTable SecondDataTable=spListCP.GetItems(qry1.GetDataTable();
我的第二个表更像主表,它将返回一个bc D E F G H值。第一个表将返回一个bc D。
我想在dropdwon中显示E F G H
PS:我之前的查询是一个CAML查询,返回DS D和E
问候,,
Kapil Gosain您要找的是接线员 使用这个很简单 假设有一个列表“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();
如果您发布一些关于如何填充列表和查询它们的代码,我将编辑我的代码,使其更具体地针对您的具体情况
亲切的问候试试这个
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();
}
公共类t
{
公共字符串val{get;set;}
}
公共类j
{
公共字符串val{get;set;}
}
公共行动结果索引()
{
var litT=新列表();
var litJ=新列表();
t objT=新的t();
j objJ=新j();
objT.val=objJ.val=“A”;
少量添加(objT);
litJ.Add(objJ);
objT.val=objJ.val=“B”;
少量添加(objT);
litJ.Add(objJ);
objT.val=“C”;
少量添加(objT);
var result=litT.Where(p=>p.val!=litJ.Select(k=>k.val).ToString()).ToList().Distinct();
返回视图();
}
请向我们显示您的代码,以便我们可以帮助您。好的,两个查询只返回一列,对吗?我建议您使用列表而不是数据表。这使得以后的数据操作更加容易。但是我的答案不值得大量编辑,因为Except()
正是您想要和需要的方法