C# ASP.NET MVC System.NotSupportedException LINQ到实体查询

C# ASP.NET MVC System.NotSupportedException LINQ到实体查询,c#,asp.net-mvc,entity-framework,linq,C#,Asp.net Mvc,Entity Framework,Linq,我写了一个查询,如下所示: var model = (from r in _db.Restaurants join rev in _db.Reviews on r.Id equals rev.RestaurantId into rest_rev from rr in rest_rev.DefaultIfEmpty() select new RestaurantViewModel { Id=r.Id, Na

我写了一个查询,如下所示:

var model = (from r in _db.Restaurants
     join rev in _db.Reviews
     on r.Id equals rev.RestaurantId
     into rest_rev
     from rr in rest_rev.DefaultIfEmpty()
     select new RestaurantViewModel
     {
        Id=r.Id,
        Name=r.Name,
        City=r.City,
        Country=r.Country,
        NumberofReviews=r.Reviews.Count,
        Reviews=rr.Body
     });
在做一些更改之前,这个查询运行良好,然后我做了一些更改(我不记得了),然后它开始发出这个错误

我的实体如下

public class Restaurant
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
    public virtual ICollection<RestaurantReview> Reviews { get; set; }
}

public class RestaurantReview
{
    public int Id { get; set; }
    public int Rating { get; set; }
    public string ReviewerName { get; set; }
    public string Body { get; set; }

    public int RestaurantId { get; set; }
}

public class RestaurantViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
    public int NumberofReviews { get; set; }
    public string Reviews { get; set; }    
}
公共级餐厅
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串City{get;set;}
公共字符串国家{get;set;}
公共虚拟ICollection审阅{get;set;}
}
公共类餐厅视图
{
公共int Id{get;set;}
公共整数评级{get;set;}
公共字符串名称{get;set;}
公共字符串体{get;set;}
公共int RestaurantId{get;set;}
}
公共类餐厅VIEWMODEL
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共字符串City{get;set;}
公共字符串国家{get;set;}
public int NumberofReviews{get;set;}
公共字符串检查{get;set;}
}
你可以试试这个

List<RestaurantViewModel> listViewModel = new List<RestaurantViewModel>();

var model =  _db.Restaurants.Include("Reviews").ToList().ForEach((item) =>
            {
                RestaurantViewModel viewmodel = new RestaurantViewModel();

               viewmodel.ID = item.ID
               viewmodel.NumberofReviews = item.Reviews.Count;
               ....

                listViewModel.Add(viewmodel);

            });
List listViewModel=new List();
var模型=_db.Restaurants.Include(“评论”).ToList().ForEach((项目)=>
{
RestaurantViewModel=new RestaurantViewModel();
viewmodel.ID=item.ID
viewmodel.NumberofReviews=item.Reviews.Count;
....
添加(视图模型);
});

您需要在加入后立即将LINQ查询转换为列表。尝试了没有用……您是如何尝试的?发布您的更新代码。顺便说一下,您不需要在此查询中加入。为什么ViewModel的Reviews属性是字符串属性?每个餐厅都可以有多个评论。因此,评论应该是一个集合。`var model=(从r in _db.Restaurants加入rev in _db.Reviews on r.Id等于rev.RestaurantId,从rr in rest\u rev选择新RestaurantViewModel{Id=r.Id,Name=r.Name,City=r.City,Country=r.Country,Reviews=rr.ReviewerName})`