在两个数组中获取具有公共 id 的元素,但 id 对于 C# 中的每组数组必须是唯一的

Fetch element with common id among two array but id must be unique for each sets of arrays in C#

我正在尝试从 2 组数组中获取具有共同 ID 的元素,但该 ID 对于每个数组必须是唯一的,该数组可以包含具有相同 ID 的多个元素,在这种情况下,它不应获取该项目。仅当 id 在两个数组之间是通用的并且对每个数组都是唯一的。

var fetchElement = ArrayA.Where(x=>ArrayB.Any(y=>y.Id == x.Id)).ToArray();

以上代码将 return 具有相同 ID 的元素。 例如:

Array 1 
[
{id = 123, name ="abc"},{id=456, name="def"},{id=123, name ="ghi"}
]
Array 2 
[
{id =123, name ="abc"},{id=456, name ="def"}
]

数组 1 和数组 2 的 ID 均为 123 和 456,但我只想要 ID 为 456 的元素,因为它对于两个数组都是唯一的。

这是一个简单的方法:

var Array1 = new[] { (id: 123, name: "abc"), (id: 456, name: "def"), (id: 123, name: "ghi") };
var Array2 = new[] { (id: 123, name: "abc"), (id: 456, name: "def") };

var query = from a1 in Array1.Where(x => Array1.Count(y => y.id == x.id) == 1)     
            join a2 in Array2.Where(x => Array2.Count(y => y.id == x.id) == 1)
            on a1.id equals a2.id
            select (a1, a2);

foreach (var x in query)
{
    Console.WriteLine($"{x.a1} {x.a2}");
}

肯定有更有效的方法,但也许对您来说就足够了。 Demo