Демо ниже
Предупреждение об эффективности: это нормально, чтобы получить однострочник для крошечных списков, как показано, но для больших рассмотрите отсортированные списки, чтобы разрешить слияние O (m + n) вместо O (m * n).
class Program
{
private static readonly List<Tuple<int, double>> A = new List<Tuple<int, double>>
{
new Tuple<int, double>(1, 2.2),
new Tuple<int, double>(2, 2.3),
new Tuple<int, double>(3, 2.4)
};
private static readonly List<Tuple<int, double>> B = new List<Tuple<int, double>>
{
new Tuple<int, double>(1, 2.2),
new Tuple<int, double>(3, 3.1),
new Tuple<int, double>(6, 3.4)
};
static void Main(string[] args)
{
var merged = A.Concat(B.Where(iB => A.All(ia => ia.Item1 != iB.Item1)));
Console.WriteLine("Merge(A,B): ");
foreach (var (item1, item2) in merged)
Console.WriteLine($" {item1}, {item2}");
Console.ReadKey();
}
}
Производит
Merge(A,B):
1, 2.2
2, 2.3
3, 2.4
6, 3.4