mvc c#结合两个以上的查询结果

时间:2016-04-04 03:37:47

标签: c# asp.net-mvc entity-framework

我有几个具有相同结果结构的通用查询,我试图将它们组合在一个变量中,以便我可以将它们传递给视图。

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,但它给出了以下错误。

'视图模型'不包含' Concat'的定义没有扩展方法' Concat'接受第一个类型' ViewModel'可以找到(你错过了使用指令或程序集引用吗?)

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您要将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();

.Concat(...) IQueryable<ViewModel>IEnumerable<ViewModel>.LastOrDefault()

导致你悲伤的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(); 电话。

试试这个:

web
相关问题