Ho una domanda su Union
e Concat
. Suppongo che entrambi si comportino allo stesso modo nel caso di List<T>
.Union Vs Concat in Linq
var a1 = (new[] { 1, 2 }).Union(new[] { 1, 2 }); // O/P : 1 2
var a2 = (new[] { 1, 2 }).Concat(new[] { 1, 2 }); // O/P : 1 2 1 2
var a3 = (new[] { "1", "2" }).Union(new[] { "1", "2" }); // O/P : "1" "2"
var a4 = (new[] { "1", "2" }).Concat(new[] { "1", "2" }); // O/P : "1" "2" "1" "2"
Il risultato di cui sopra sono attesi,
Ma Incase di List<T>
sto ottenendo lo stesso risultato.
class X
{
public int ID { get; set; }
}
class X1 : X
{
public int ID1 { get; set; }
}
class X2 : X
{
public int ID2 { get; set; }
}
var lstX1 = new List<X1> { new X1 { ID = 10, ID1 = 10 }, new X1 { ID = 10, ID1 = 10 } };
var lstX2 = new List<X2> { new X2 { ID = 10, ID2 = 10 }, new X2 { ID = 10, ID2 = 10 } };
var a5 = lstX1.Cast<X>().Union(lstX2.Cast<X>()); // O/P : a5.Count() = 4
var a6 = lstX1.Cast<X>().Concat(lstX2.Cast<X>()); // O/P : a6.Count() = 4
Ma entrambi si comportano lo stesso in caso di List<T>
.
Qualche suggerimento, per favore?
Se si conosce la differenza tra questi due metodi, perché il risultato vi sorprenderà? È una conseguenza diretta della funzionalità dei metodi. –
@KonradRudolph, Quello che intendo è nell'Elenco posso usare qualsiasi 'Unione'/'Concat'. Perché entrambi si comportano allo stesso modo. –
No, ovviamente no.Non si comportano allo stesso modo, come mostra il tuo primo esempio. –