我有以下代码:
private Models.mediamanagerEntities dataModel = new Models.mediamanagerEntities();
public ActionResult Index(FormCollection form)
{
ViewData.Model = (from m in dataModel.Customers select m.Type.Items).ToList();
return View();
}
View:
%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<List<Project_Name.Models.Item>>" %>
<% foreach (var m in ViewData.Model)
{ %>
Title: <%= m.Title %>
<% } %>
我收到以下错误:
传递到字典中的模型项的类型为'System.Collections.Generic.List 1[System.Data.Objects.DataClasses.EntityCollection
1 [Project_Name.Models.Item]]',但此字典需要类型为'System.Collections的模型项.Generic.List`1 [Project_Name.Models.Item]。
我不太确定这里发生了什么,或者如何纠正它,谢谢。
答案 0 :(得分:1)
当您的视图需要List<EntityCollection<Item>>
时,您的LINQ正在创建类似此List<Item>
的列表。
我不太了解LINQ的查询语法,但这就是你用函数语法得到你想要的东西:
ViewData.Model = dataModel.Customers.SelectMany(c => c.Type.Items).ToList();
这会占用每位客户下的许多Items
,并将其展平为一个Items
列表。
答案 1 :(得分:0)
替换此行:
ViewData.Model = (from m in dataModel.Customers select m.Type.Items).ToList();
以下内容:
ViewData.Model = dataModel.Type.ToList();