在两个数组中获取具有公共 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
我正在尝试从 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