簡體   English   中英

mvc c#結合兩個以上的查詢結果

[英]mvc c# combine more than two query results

我有幾個具有相同結果結構的通用查詢,我試圖將它們組合在一個變量中,以便我可以將它們傳遞給視圖。

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,但它給出了下面的錯誤。

'ViewModel'不包含'Concat'的定義,並且沒有擴展方法'Concat'可以找到接受類型'ViewModel'的第一個參數(你是否缺少using指令或匯編引用?)

謝謝!

如果你要用實際類型替換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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM