【问题标题】:Linq nested select query on self join table对自联接表的 Linq 嵌套选择查询
【发布时间】:2013-01-30 21:36:59
【问题描述】:

我正在开发一个 .Net MVC3 项目。我有以下代码在同一张表上运行 2 个查询。第二个查询取决于第一个查询的结果。我如何重写它以使用单个查询(带有嵌套查询)并将结果分配给我的视图模型?

public ViewResult Category(string id)
{
    var viewModel = new ProductCategoryNavigation();

    viewModel.category = db.Category.Single(c=>c.NavigationId==id);
    viewModel.subCategories = db.Category.Where(i => i.ParentId == category.Id);

    return View(viewModel);
}

【问题讨论】:

    标签: asp.net-mvc linq


    【解决方案1】:
    var query = (from c in db.Category.Where(x => x.NavigationId == id)
                 join sc in db.Category on c.Id equals sc.ParentId into g
                 select new {
                     Category = c,
                     SubCategories = g
                 }).Single();
    
    
    viewModel.category = query.Category;
    viewModel.subCategories = query.SubCategories;
    

    【讨论】:

      【解决方案2】:

      如果有Category-to-Category的关系映射,你可以使用这样的东西。

      viewModel.subCategories = db.Category.Single(c=>c.NavigationId==id).Category;
      

      如果存在关系,您会看到 2 个不同的关系,如下所示:

      Category.Category1 > return Category (parent)
      Category.Category2 > return Collection of Category (children)
      

      【讨论】:

        【解决方案3】:

        我认为你可以尝试这样的事情。

        viewModel.subCategories = from c in db.categories
                                  join c1 in db.categories on c.Id = c1.ParentId 
                                  where c.NavigationId = id
                                  select c1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-06
          • 2015-06-16
          • 2021-06-12
          相关资源
          最近更新 更多