将Linq表达式转换为C#EF

将Linq表达式转换为C#EF,c#,entity-framework,linq,C#,Entity Framework,Linq,我已经在这两天了。我不太擅长Linq表达式,所以请原谅我的简单。我有两个相关的表,在TSQL中编写联接会很容易,但我使用的是实体框架和Linq 我在LINQPad中创建了一个查询(通过阅读文章和教程),它最终将返回我想要的结果 现在我需要帮助把它转换成C代码。我有谷歌的翻译网站,找到了很多SQL到Linq,但没有找到我正在做的…很可能是因为我甚至不知道我在使用正确的搜索词 我的LINQPad代码如下: DashboardNavigations .OrderBy(x => x.Id) .Se

我已经在这两天了。我不太擅长Linq表达式,所以请原谅我的简单。我有两个相关的表,在TSQL中编写联接会很容易,但我使用的是实体框架和Linq

我在LINQPad中创建了一个查询(通过阅读文章和教程),它最终将返回我想要的结果

现在我需要帮助把它转换成C代码。我有谷歌的翻译网站,找到了很多SQL到Linq,但没有找到我正在做的…很可能是因为我甚至不知道我在使用正确的搜索词

我的LINQPad代码如下:

DashboardNavigations
.OrderBy(x => x.Id)
.Select(x => new 
{
    x.Id,
    x.Name,
    x.Description,
    x.ImageUrl,
    SubDash = SubDashNavs 
        .Where(s => s.DashId == x.Id)
        .Select(y => new { y.Id, y.Name, y.Description })

})
我习惯于将简单的Linq表达式写入实体框架,如下所示:

var query = _mlsDashboardNavRepository.Table;
query = query.OrderBy(c => c.Id);
var dashnav = query.ToList();
正如你所见,我有返回的主要记录,但不能得到正确的加入


我需要帮助的是将代码从LINQPad转换为C#/EF/LINQ到SQL…?

如评论中所述,我建议您的mlsDashboardNavRepository仅指
仪表板导航
,因为您说您只使用
\uMLSDashBoardNavRepository.Tables来检索主记录;您的仪表板导航参考在哪里?要执行查询,您需要一个引用(所有)数据库表的上下文。下面是使用数据库上下文的LINQ格式的代码,如果您习惯了SQL语法,这可能会更容易

var query = (from d in context.DashboardNavigations
             join s in context.SubDashNavs on d.Id equals s.Id
             orderby d.Id ascending
             select new 
             { 
                d.Id, 
                d.Name, 
                d.Description,
                d.ImageUrl,
                SubDash = s 
             });

var dashNavs = query.ToList();

所以我把这个贴在这里给其他人看。这不是我行动的一部分,恩林博姆得到了行动的答案,所以他得到了荣誉。然而,在理顺了我的疑问之后,我想把它投射出来

我的模型课基本上是这样的:

public class DashboardNavigation()
{
  public int Id {get; set;}
  public string Name {get; set;}
  .....etc.....
  public List<SubNav> SubDashNav {get; set;}
}

public class SubNav()
{
  ....properties....
}

包括您将如何在SQL中编写它,我将向您展示它的Linq。我认为问题在于您需要som上下文,您可以在其中访问仪表板导航和子仪表板导航。如果我错了,请纠正我,但是
\u mlsDashboardNavRepository.Table
似乎是一个只引用仪表板导航的上下文。使用LINQ to SQL和正确的上下文(数据库不是表),您应该能够像在LINQPad中一样编写查询。是的,您是正确的。我让事情变得更难了。这与我在LINQPad中写的内容非常直接。
         var query = _mlsDashboardNavRepository.Table
        .OrderBy(x => x.Id)
        .Select(x => new
        {
            Id = x.Id,
            Name = x.Name,
            Description = x.Description,
            ImageUrl = x.ImageUrl,
            SubDashNav = _mlsSubDashNav.Table
                .Where(s => s.DashId == x.Id)

        }).ToList().Select(q => new MLS_DashboardNavigation()
                            {
                                Id = q.Id,
                                Name = q.Name,
                                Description = q.Description,
                                ImageUrl = q.ImageUrl,
                                SubDashNav = q.SubDashNav.ToList()
                            }).ToList();

        return query;