如何在视图razor中获取查询linq的结果

时间:2017-05-21 22:36:38

标签: asp.net asp.net-mvc linq razor

我有以下加入查询,但我不知道在视图中的访问

var SearchPost = (from p in db.Posters 
                             where p.CityID == CityID
                             join a in db.Assessments
                             on p.PosterID equals a.PosterID into search
                             select new { p, like = search.Where((a => a.PosterID == p.PosterID)).Count() }).ToList();

2 个答案:

答案 0 :(得分:0)

您需要在Action方法中返回SearchPost结果(即return View(SearchPost);)。然后在.cshtml文件中,您将声明@model MyNameSpace.Models.Poster其中MyNameSpace是您的命名空间的名称,而Poster是您Models文件夹中的模型类。 (你显然需要改变@model MyNameSpace.Models.Poster)。

然后,您可以使用Poster(例如@Model@Model.PosterID或其他)访问剃须刀视图页面中的@Model.Assessment.PosterID模型。

答案 1 :(得分:0)

SearchPost是匿名对象,因此您必须将SearchPost对象映射到另一个模型。创建新模型:

public class PostSearchResult
{
    public Poster Poster { get; set; }
    public int LikeCount { get; set;}
}

然后:

var searchPost = (from p in db.Posters 
                  where p.CityID == CityID
                  join a in db.Assessments
                  on p.PosterID equals a.PosterID into search
                  select new { p, like = search.Where((a => a.PosterID == p.PosterID)).Count() }
                 )
                .ToList();

var searchResult = searchPost
    .Select(s => new PostSearchResult { Poster = s.p, LikeCount = s.like})
    .ToList();

然后将searchResult返回View