如何从DataView ASP .NET MVC转换LINQ生成的匿名数据类型列表?

时间:2011-11-11 00:55:39

标签: .net asp.net-mvc linq

我有这个LINQ ......

var n = from a in this.DataContext.News select new { a.ID, a.Name, a.StartDate, a.EndDate, SportName = (from v in this.DataContext.Sports where v.ID == a.SportID select v).FirstOrDefault()};

ViewData["News"] = n.ToList();

我需要生成一个HTML表格。我无法弄清楚如何从ViewData [“新闻”]获取项目。任何线索?

<% foreach (var item in (???) ViewData["News"])
                   { %> ...

更新

我发现了这个post我似乎必须创建一个额外的类NewsView,它将包含所有选定的字段。然后我可以转换为NewsView ...还有其他方法吗?

 var n= from a in this.DataContext.News
                      select new NewsView { ID = a.ID, Name = a.Name, StartDate = a.StartDate, EndDate = a.EndDate, 
                                  SportName = (from v in this.DataContext.Sports where v.ID == a.SportID select v).FirstOrDefault().Name};

 <% foreach (var item in (IEnumerable<MyProject.ViewModels.NewsView>)ViewData["News"])
                   { %>

1 个答案:

答案 0 :(得分:1)

要做的最好的事情是在模型中创建一个类,以便您有一个List项目来分配您的数据然后重复,而不是使用ViewData或Viewbags。然后在foreach循环中,var项将具有点(。)属性。

@foreach (var item in Model.myClassItems)
{
      <div>@item.classproperty</div>
}