LINQ筆記:使用LINQ達成NOT IN的效果(黑名單)

今天遇到一個LINQ的應用,需要使用到SQL的Where NOT IN某個清單的效果,稍微想了一下把程式碼寫出並記錄在此供回憶。

LINQ達成SQL的NOT IN效果

假設我們有一個oUsers清單,另外有一張oBlocks黑名單,想要將oUsers NOT IN oBlocks,挑選成為一個oAlllows可登入系統清單,程式碼如下:

public static void Main()
{ //使用者清單
  var oUsers = new System.Collections.Generic.List<string>() { "aaa", "bbb", "ccc", "ddd", "eee", "fff" };
  //黑名單
  var oBlocks = new System.Collections.Generic.List<string>() { "bbb", "ddd", "eee" };
  //可登入系統清單
  var oAllows = oUsers.Where(x => !oBlocks.Any(y => y.Contains(x)));
  //輸出
  WriteLine(string.Join("、", oAllows));
  Read();
}

經過這樣的程式碼後,我們就可以將oBlocks清單裡面的成員排除掉了,輸出的結果如下:

aaa、ccc、fff
CSharp LINQ SQL WhereNotIn BlockList BlackList