C#で2つのIQueryableリストのレコードをマージします。やってみる
IQueryable<MediaType> list1 = values;
IQueryable<MediaType> list2 = values1;
obj.Concat(obj1);
そして
IQueryable<MediaType> list1 = values;
IQueryable<MediaType> list2 = values1;
obj.Union(obj1);
しかし、list1
が空の場合、結果のリストも空になります。私の場合、list1
は空にすることができますが、list2
はレコードを持つことができます。それらをどのようにマージすればよいですか?
戻り値を使用していない-他のすべてのLINQ演算子と同様に、メソッドはexistingシーケンスを変更せず、newシーケンスを返します。だからこれを試してください:
var list3 = list1.Concat(list2);
または
var list4 = list1.Union(list2);
Union
は集合演算です-個別の値を返します。
Concat
は、最初のシーケンスのアイテムを返し、その後に2番目のシーケンスのアイテムが続くだけです。結果のシーケンスには重複項目が含まれる場合があります。
Union
は、Concat
の後にDistinct
が続くと考えることができます。
でも
var result = Enumerable.Concat(list1, list2);
動作しませんか?
また、リストが空ではなく、nullであることを確認してください。
var result = Enumerable.Concat(
list1 ?? Enumerable.Empty<MediaType>()
list2 ?? Enumerable.Empty<MediaType>());
また試してみてください:
var result = Enumerable.Concat(
list1.AsEnumerable(),
list2.AsEnumerable());