2016-02-20 87 views
0

我搜索了四處,並且人們都在討論如何使用ExpandDo與動態,但我一直未能弄清楚如何執行這與從LINQ查詢返回的集合。將LINQ anomyous類型結果傳遞給ASP.NET 5 MVC查看

我在做一個內部聯接我

var innerJoin = 
     from e in db.Enrollments 
     join s in db.Student on e.StudentID equals s.StudentID 
     select new { Student= s.Name , Course = e.CourseID }; 

我已經試過

dynamic model = innerJoin.ToList().ToExpando(); 

return View(model) 

,我有

@model System.Collections.Generic.IEnumerable<dynamic> 

2個表(學生和入學率)之間的數據庫在我View.cshtml的頂部

,但它給出了這個錯誤,當我嘗試導航到Web應用程序控制器:

傳遞到字典的模型產品類型 「System.Dynamic.ExpandoObject」,但這部詞典需要一個模型 項目類型 'System.Collections.Generic.IEnumerable`1 [System.Object]'。 ''

我也試過:

dynamic model = innerJoin.ToList(); 

    return View(model); 

但後來在我看來(.cshtml文件)我

@foreach (dynamic item in Model) 
    { 
     <tr> 
      <td> 
       @Html.Raw(item.Course) 
      </td> 
     </tr> 
    } 

它會在@ Html.Raw線BARF與

類型的異常'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'發生在 App_Web_index.cshtml.1bbec3a6.jtomobws.dll但在用戶 代碼

沒有處理理想情況下,我想使之成爲一個襯墊。在我看來,我希望能夠遍歷一系列屬性包,並提取學生和課程字段。所以我的物業包包含物業學生和課程,他們會收集他們。我看過很多類似的帖子,但沒有這樣做

感謝 托馬斯

+0

不要使用'dynamic'!使用「學生」和「課程」屬性創建視圖模型。 –

+0

謝謝,你可能是對的,我看到這個建議很多。無論如何,爲了學習,我對如何使用動態進行實際操作感興趣。 – Prof

回答

1

EDITED

我認爲innerJoin.ToList().ToExpando();轉換您的匿名對象從加入到Expando的對象返回列表而不是IEnumerable<dynamic>。如果你想獲得動態對象的名單,你可以使用類似:

var innerJoin = from e in db.Enrollments 
       join s in db.Student on e.StudentID equals s.StudentID 
       select e; 


var model = new List<dynamic>(); 
foreach(var l in innerJoin) 
{ 
    dynamic temp = new System.Dynamic.ExpandoObject(); 
    temp.Student = l.StudentID; 
    temp.Course = l.CourseID; 
    model.Add(temp); 
} 

這將爲System.Collections.Generic.IEnumerable<dynamic>模型

Here is the example for working fiddle

工作,雖然我真的建議你使用強類型的模型。通過使用動態對象,你基本上放棄了statically typed languages的大部分優點。

+0

非常感謝,但現在我得到錯誤\t CS0117 \t'ExpandoObject'不包含'學生'的定義,當我嘗試構建時,'Course'的定義相同 – Prof

相關問題