我想在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只返回第一个序列中的项目,然后返回第二个序列中的项目; 生成的序列可以包含重复的项目.
你可以认为Union是Concat其次Distinct.
甚至
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)