如何合并两个IQueryable列表

Fra*_*dal 47 c# iqueryable

我想在C#中合并两个IQueryable列表的记录.我试试

IQueryable<MediaType> list1 = values;
IQueryable<MediaType> list2 = values1;
obj.Concat(obj1);
Run Code Online (Sandbox Code Playgroud)

IQueryable<MediaType> list1 = values;
IQueryable<MediaType> list2 = values1;
obj.Union(obj1);
Run Code Online (Sandbox Code Playgroud)

但如果list1为空,则结果列表也为空.在我的情况下,要么list1可以是空的,但list2可以有记录.我应该如何合并它们?

Jon*_*eet 75

您没有使用返回值 - 就像所有其他LINQ运算符一样,该方法不会更改现有序列 - 它会返回一个序列.试试这个:

var list3 = list1.Concat(list2);
Run Code Online (Sandbox Code Playgroud)

要么

var list4 = list1.Union(list2);
Run Code Online (Sandbox Code Playgroud)

Union 是一个设置操作 - 它返回不同的值.

Concat只返回第一个序列中的项目,然后返回第二个序列中的项目; 生成的序列可以包含重复的项目.

你可以认为UnionConcat其次Distinct.


aba*_*hev 6

甚至

var result = Enumerable.Concat(list1, list2);
Run Code Online (Sandbox Code Playgroud)

不起作用?

并确保列表是空的,而不是空的:

var result = Enumerable.Concat(
    list1 ?? Enumerable.Empty<MediaType>()
    list2 ?? Enumerable.Empty<MediaType>());
Run Code Online (Sandbox Code Playgroud)

还可以尝试:

var result = Enumerable.Concat(
    list1.AsEnumerable(),
    list2.AsEnumerable());
Run Code Online (Sandbox Code Playgroud)