2013-10-25 38 views
0

我有幾個SharePoint列表。我查詢一個SharePoint列表並根據我的需要獲取某些項目。 現在我不得不查詢另一個SharePoint列表並從列表中獲取列表項目,但是我的列表項目應該排除我從以前的查詢中獲得的項目。顯示元素通過從其他數據表中排除所有元素來修復數據表

說我的列表有值A,B,C,D和E 從我的第一個查詢,我得到值D和E.現在我的第二個查詢應該是這樣的,它應該只返回AB和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 values..Firsttable將返回A B C D。 我瓦納顯示E F G H在dropdwon。

PS:我以前的查詢是CAML查詢returnds d和E

問候, 卡皮爾Gosain

+0

請告訴我們你的代碼,所以我們可以幫助你。 – Marco

+0

好的,所以兩個查詢都只返回1列嗎?我建議你使用列表而不是數據表。這使得事後處理數據變得容易很多。但是,這不值得大量編輯我的答案,因爲Except()只是您想要和需要的方法。 – Marco

回答

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

,我會編輯我的代碼以更具體到您的個案。

親切的問候

+0

在問題中添加代碼 – Kapil

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(); 
     } 
相關問題