【C#】Lambda 查詢某欄位是否包含在陣列之內

  • 372
  • 0
  • C#
  • 2021-05-31

Lambda 查詢某欄位是否包含在陣列之內
系統環境:Windows 10、Visual Studio 2017

內容摘要:
原本使用Lambda 撈資料,現在需要下多個條件,找出多個不同Id 的資料。
起初想法是

  var test = data.Where( x=> x.id == "A" )  + data.Where( x=> x.id == "B" ); 

之類的東西,但是這個是不可能的。因為IQueryable 沒有辦法用 + 的。

※ 2021/05/31 更新
原本是想要分開撈,然後再合併在一起。但其實不用這樣,依照下面的解決辦法就可以處理,也是最Common 的解法

解決辦法
有想說用List<T>去接,但是這個查詢結果又要做 OrderBy Skip Take,轉成List<T>太麻煩。苦思許久,終於找到一個方法:

List<string> uids = readUids();
data = data .Where(x => uids.Contains(x.UID));

※ 2021/05/31 更新
回到題目,如果真的想要把兩個陣列合在一起。分別撈完之後,再ToList()、AddRange 就可以了。
或是使用內建的Concat (合併兩個陣列),或是Union (合併且排除兩陣列中相同項目)

相關連結
NULL