使用linq来确定ListB中是否存在ListA中的任何元素

本文关键字:ListA 存在 任何 元素 是否 使用 ListB linq | 更新日期: 2023-09-27 18:00:52

我正在尝试使用PredicateBuilder来编写动态linq查询。在我的对象中,我有一个"状态"列表,还有另一个要搜索的状态列表。

所以我需要能够观察我的物体。Status属性(列表(,并查看它是否包含我的查询列表中的任何项。

我一直在摆弄.Any((和.Contains((,但似乎找不到正确的语法。

我做错了什么?以下是我尝试过的一些东西,但都没有正确的语法。

myObject.Statuses.Contains(myStatusList);
myObject.Statuses.Any(myStatusList);
myObject.Statuses.Any(s => s == myStatusList);

使用linq来确定ListB中是否存在ListA中的任何元素

got.Any(x => want.Contains(x))

然而,经过进一步思考,我将编写一个ContainsAny扩展方法,以使其更具可读性。实现可能是相同的(尽管want.Intersect(got).Any()也会起作用(。

你的意思是:

myObject.Statuses.Any(s => myStatusList.Contains(s));

这也相当于:

myStatusList.Any(s => myObject.Statuses.Contains(s));

关于交集http://msdn.microsoft.com/en-us/vcsharp/aa336761.aspx#intersect1

  public void Linq50()
  {
       int[] numbersA = { 0, 2, 4, 5, 6, 8, 9 };
       int[] numbersB = { 1, 3, 5, 7, 8 };
       var commonNumbers = numbersA.Intersect(numbersB);
       Console.WriteLine("Common numbers shared by both arrays:");
       foreach (var n in commonNumbers)
       {
           Console.WriteLine(n);
       }
   }