有人可以為我提供一個關于如何使用 .NET 6 LINQIntersectBy和ExceptBy方法的小例子嗎?MSDN 沒有任何示例,我嘗試的示例由于 CS0411 錯誤而無法編譯。我試過的例子:
namespace Test
{
internal struct Example
{
public int X { get; set; }
public int Y { get; set; }
public override string ToString()
{
return $"{X}, {Y}";
}
}
public class Program
{
public static void Main()
{
var elements = new List<Example>
{
new Example { X = 10, Y = 20 },
new Example { X = 11, Y = 23 },
};
var elements2 = new List<Example>
{
new Example { X = 10, Y = 12 },
new Example { X = 44, Y = 20 },
};
//ok
var union = elements.UnionBy(elements2, x => x.X);
//CS0411 - Why ?
var intersect = elements.IntersectBy(elements2, x => x.X);
//CS0411 - Why ?
var except = elements.ExceptBy(elements2, x => x.X);
Console.ReadKey();
}
}
}
uj5u.com熱心網友回復:
授予檔案沒有任何示例,它指出選擇器函式應該選擇TKey即第二個集合的型別。以下應該作業:
var intersect = elements.IntersectBy(elements2, x => x);
var except = elements.ExceptBy(elements2, x => x);
雖然我認為這可能更接近你想要的:
var intersect = elements.IntersectBy(elements2.Select(e => e.X), x => x.X);
對于更復雜的型別,您可能需要考慮實作 IEqualityComparer 并使用將一個作為引數的多載。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367624.html
上一篇:自參考物件中的空物件模式
