【问题标题】:how to get result of query linq in view razor如何在视图剃刀中获取查询 linq 的结果
【发布时间】:2017-05-21 22:36:38
【问题描述】:

我有以下加入查询,但我不知道可以访问喜欢的视图

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();

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • SearchPost 没有模型类。我有表格海报和表格评估,我想在表格海报中获取数据并计算每个帖子的数量。
      • 对不起,我应该说海报模型类而不是 SearchPost 模型类。我已经更新了我的答案。思路是一样的,只是把SearchPost改成了Poster
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2012-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多