简体   繁体   English

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);

I cannot combine the two query results, I tried using Concat or Union but it gives the error below. 我无法结合两个查询结果,我尝试使用Concat或Union,但它给出了下面的错误。

'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?) 'ViewModel'不包含'Concat'的定义,并且没有扩展方法'Concat'可以找到接受类型'ViewModel'的第一个参数(你是否缺少using指令或汇编引用?)

Thanks! 谢谢!

If you were to replace the var keyword with the actual types you'd see that you have this: 如果你要用实际类型替换var关键字,你会看到你有这个:

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();

In order to do a .Concat(...) it should be IQueryable<ViewModel> or IEnumerable<ViewModel> . 为了做一个.Concat(...)它应该是IQueryable<ViewModel>IEnumerable<ViewModel>

It's the .LastOrDefault() call that is causing you grief. 这是导致你悲痛的.LastOrDefault()调用。

Try this: 尝试这个:

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();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM