Je veux fusionner les enregistrements de deux listes IQueryable en C #. J'essaie
IQueryable<MediaType> list1 = values;
IQueryable<MediaType> list2 = values1;
obj.Concat(obj1);
et
IQueryable<MediaType> list1 = values;
IQueryable<MediaType> list2 = values1;
obj.Union(obj1);
mais si list1
est vide alors la liste résultante est également vide. Dans mon cas, soit list1
peut être vide mais list2
peut avoir des enregistrements. Comment dois-je les fusionner?
Vous n'utilisez pas la valeur de retour - comme tous les autres opérateurs LINQ, la méthode ne change pas la séquence existante - elle retourne une séquence new. Essayez donc ceci:
var list3 = list1.Concat(list2);
ou
var list4 = list1.Union(list2);
Union
est une opération définie - elle renvoie des valeurs distinctes.
Concat
renvoie simplement les éléments de la première séquence suivis des éléments de la deuxième séquence; la séquence résultante peut inclure des éléments en double.
Vous pouvez penser à Union
comme Concat
suivi de Distinct
.
Même
var result = Enumerable.Concat(list1, list2);
ne fonctionne pas?
Et assurez-vous que les listes sont vides et non nulles:
var result = Enumerable.Concat(
list1 ?? Enumerable.Empty<MediaType>()
list2 ?? Enumerable.Empty<MediaType>());
Essayez aussi:
var result = Enumerable.Concat(
list1.AsEnumerable(),
list2.AsEnumerable());