c#lambda表达式错误…此字典需要类型为的模型项
当我更改查询时,我得到了一个错误。你能帮忙吗c#lambda表达式错误…此字典需要类型为的模型项,c#,asp.net-mvc,lambda,C#,Asp.net Mvc,Lambda,当我更改查询时,我得到了一个错误。你能帮忙吗 public ActionResult Index(int? id) { Models.MyProjectEntities entity = new Models.MyProjectEntities(); // NORMAL QUERY, NO PROBLEM //var Messages = entity.Message.Where(x => x.Active);
public ActionResult Index(int? id)
{
Models.MyProjectEntities entity = new Models.MyProjectEntities();
// NORMAL QUERY, NO PROBLEM
//var Messages = entity.Message.Where(x => x.Active);
// JOINED QUERY, GENERATES ERROR
var Messages = entity.Message.Join(entity.Categories,
m => m.CategoriID,
k => k.CategoriID,
(m, k) => new { Message = m, Categories = k })
.Where(x => x.Message.Active);
return View(Messages);
}
这是aspx文件的第一行
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyProject.Models.Message>>" %>
这里是错误
The model item passed into the dictionary is of type 'System.Data.Objects.ObjectQuery`1[<>f__AnonymousType7`2[MyProject.Models.Message,MyProject.Models.Categories]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[MyProject.Models.Message]'.
传入字典的模型项的类型为“System.Data.Objects.ObjectQuery`1[f_uAnonymousType7`2[MyProject.Models.Message,MyProject.Models.Categories]]”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[MyProject.Models.Message]”的模型项。
您的视图声明为获取一组消息。
您正在尝试向其传递一组匿名类型
正如错误明确指出的,它不适合
相反,您应该创建一个类来保存来自联接的数据,然后将视图声明为获取该类的一组数据。
(视图无法轻松使用匿名类型的模型)因为您加入了一个模型,而创建了一个匿名类型,所以您需要这样做
var Messages = entity.Message.Join(entity.Categories,
m => m.CategoriID,
k => k.CategoriID,
(m, k) => new { Message = m, Categories = k })
.Where(x => x.Message.Active)
.Select(x => new Message { ... .. .. } );
或者,如果还需要类别,则应更改视图模型类型
编辑:
模型类型应该是MessageWithCategories(必须创建这个类);但是,我需要在同一个视图中同时使用这两个选项。你必须创建这个类。你可以将此帖子作为答案来表达你的感激之情:)
public ActionResult Index(int? id)
{
Models.MyProjectEntities entity = new Models.MyProjectEntities();
// NORMAL QUERY, NO PROBLEM
//var Messages = entity.Message.Where(x => x.Active);
// JOINED QUERY, GENERATES ERROR
var Messages = entity.Message.Join(entity.Categories,
m => m.CategoriID,
k => k.CategoriID,
(m, k) => new { Message = m, Categories = k })
.Where(x => x.Message.Active)
.Select(x => x.Message);
return View(Messages);
}
public ActionResult Index(int? id)
{
Models.MyProjectEntities entity = new Models.MyProjectEntities();
// NORMAL QUERY, NO PROBLEM
//var Messages = entity.Message.Where(x => x.Active);
// JOINED QUERY, GENERATES ERROR
var Messages = entity.Message.Join(entity.Categories,
m => m.CategoriID,
k => k.CategoriID,
(m, k) => new MessageWithCategories { Message = m, Categories = k })
.Where(x => x.Message.Active);
return View(Messages);
}