Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过排除另一个数据表中的所有元素来显示数据表中的元素_C#_Linq_List_Datatable - Fatal编程技术网

C# 通过排除另一个数据表中的所有元素来显示数据表中的元素

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();

我有一些SharePoint列表。我查询一个SharePoint列表,并根据需要获取某些项目。 现在我必须查询另一个SharePoint列表并从该列表中获取列表项,但我的列表项应排除我从上一次查询中获取的项目

假设我的列表有值A、B、C、D和E 从我的第一个查询中,我得到了值D和E。 现在,我的第二个查询应该只返回一个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();
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()
正是您想要和需要的方法