2014-10-11 79 views
0

我正在嘗試將linq結果顯示到視圖中,但我一直未能。我得到的錯誤是「傳入字典的模型項目類型爲'System.Data.Entity.Infrastructure.DbQuery 1[<>f__AnonymousType2 2 [System.Double,System.String]]',但是這個字典需要一個' System.Collections.Generic.IEnumerable「MVC無法顯示Linq查詢結果以查看

我手動創建了我的視圖,並通過右鍵單擊控制器並添加一個視圖,但我有點卡在這裏。

public ActionResult leftjoin() 
    { 
     var q = from b in db.OrderHistories 
       join c in db.BuyerComms on b.ITEMID equals c.ITEMID into sr 
       from x in sr.DefaultIfEmpty() 
       select new { Item = b.ITEMID, buyer = x.Buyer }; 
       return View (q.ToList()); 


    } 

和我的觀點:

@model IEnumerable<myapp.Models.OrderHistory> 

我用linqpad來測試我的LINQ和我得到正確的結果。通過指示

+2

那麼你的結果是一個匿名類型的列表。 Anonymous類型不是'myapp.Models.OrderHistory'。 – 2014-10-11 15:26:02

+0

你不能從函數返回匿名類型 – W92 2014-10-11 17:38:49

回答

3

您的查詢返回匿名類型:

select new { Item = b.ITEMID, buyer = x.Buyer }; 

你需要自行選入式的OrderHistory。你沒有提供這個類,所以我猜測它是這樣的:

select new OrderHistory { Item = b.ITEMID, buyer = x.Buyer }; 
+0

謝謝。我最終創建了一個數據庫視圖來完成連接。我無法得到Linq。謝謝。我會將此標記爲已接受的答案。 – causita 2014-10-11 17:53:12