mvc c#合并两个以上的查询结果 [英] mvc c# combine more than two query results
问题描述
我有几个具有相同结果结构的通用查询,我试图将它们合并到一个变量中,以便可以将它们传递给视图.
I have several generic queries that has the same structure of results and I'm trying to combine them in one variable so that I can pass them to the view.
var query1 = db1.table.Where(a => a.ID == filter1).Select(x=> new ViewModel { //columns}).LastOrDefault();
var query2 = db1.table.Where(a => a.ID == filter2).Select(x=> new ViewModel { //columns}).LastOrDefault();
var query3 = db1.table.Where(a => a.ID == filter3).Select(x=> new ViewModel { //columns}).LastOrDefault();
var combi = query1.Concat(query2);
我无法结合使用这两个查询结果,我尝试使用Concat或Union,但它给出了以下错误.
I cannot combine the two query results, I tried using Concat or Union but it gives the error below.
'ViewModel'不包含'Concat'的定义,也找不到扩展方法'Concat'接受类型为'ViewModel'的第一个参数(您是否缺少using指令或程序集引用?)
'ViewModel' does not contain a definition for 'Concat' and no extension method 'Concat' accepting a first argument of type 'ViewModel' could be found (are you missing a using directive or an assembly reference?)
谢谢!
推荐答案
如果将 var
关键字替换为实际类型,则会发现您拥有以下内容:
If you were to replace the var
keyword with the actual types you'd see that you have this:
ViewModel query1 = db1.table.Where(a => a.ID == filter1).Select(x => new ViewModel { /* columns */ }).LastOrDefault();
ViewModel query2 = db1.table.Where(a => a.ID == filter2).Select(x=> new ViewModel { /* columns */ }).LastOrDefault();
ViewModel query3 = db1.table.Where(a => a.ID == filter3).Select(x=> new ViewModel { /* columns */ }).LastOrDefault();
为了执行 .Concat(...)
,它应该是 IQueryable< ViewModel>
或 IEnumerable< ViewModel>
.
In order to do a .Concat(...)
it should be IQueryable<ViewModel>
or IEnumerable<ViewModel>
.
这是导致您感到悲伤的 .LastOrDefault()
调用.
It's the .LastOrDefault()
call that is causing you grief.
尝试一下:
IQueryable<ViewModel> query1 = db1.table.Where(a => a.ID == filter1).Select(x => new ViewModel { /* columns */ });
IQueryable<ViewModel> query2 = db1.table.Where(a => a.ID == filter2).Select(x=> new ViewModel { /* columns */ });
IQueryable<ViewModel> query3 = db1.table.Where(a => a.ID == filter3).Select(x=> new ViewModel { /* columns */ });
var combi = query1.Concat(query2).Concat(query3).LastOrDefault();
这篇关于mvc c#合并两个以上的查询结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!