首页 > 解决方案 > 如何使用 Linq 找出强类型表是否包含 C# 中另一个强类型表中的值

问题描述

我有两个针对具有位置的客户的强表表,其中包含“CustomerCode”和“Location”列。

在客户 A 中,有以下行:

"A", 1
"A", 2
"A", 3

在客户 B 中,有以下行:

"B", 2
"B", 5
"B", 6

我如何使用 Linq 来确定客户 B 是否有任何位置,与客户 A 相同。

我想做这样的事情,但在 linq 中:

var doesExist = false; 
foreach(var a in customersA)
{
   if (customersB.Select(b => b.Location).Contains(a.Location))
   {
      doesExist = true;
      break;
   }
 }

例如,我想做这样的事情:

customersA.Select(a => a.Location).Any(customersB.Select(b => b.Location)

标签: c#linq

解决方案


注意我假设您需要一个布尔值来确定两个表中是否有任何客户共享一个位置。并假设您不在乎哪个客户有匹配 - 只是有一个匹配。

如果您想在 LINQ 语句中全部使用,请嵌套 Any 语句,然后比较 Location 属性:

bool sameLocationFound = customersB.Any(b => customersA.Any(a => a.Location == b.Location));

我将此代码读作“查找是否存在任何客户 B,以便任何客户 A 与 B 共享位置”。


推荐阅读