C# 调试C语言中的Lambda表达式#

C# 调试C语言中的Lambda表达式#,c#,asp.net,sql-server,lambda,C#,Asp.net,Sql Server,Lambda,我正在用C#从ASP.net应用程序查询SQL Server数据库。以下是我的数据库模式的一部分 我编写了以下表达式以从数据库中获取数据 var query = db.DBMovies.Where(ent => ent.Id == Id).Join(db.DBCategories, r => r.Id, l => l.CategoryId, (r, l) => new { Id = r.Id, MovieNam

我正在用C#从ASP.net应用程序查询SQL Server数据库。以下是我的数据库模式的一部分

我编写了以下表达式以从数据库中获取数据

var query = db.DBMovies.Where(ent => ent.Id == Id).Join(db.DBCategories,
    r => r.Id,
    l => l.CategoryId,
    (r, l) => new
    {
       Id = r.Id,
       MovieName = r.Name,
       Year = r.Year,
       Category = r.Genre,
       PosterURL = r.PosterURL,
});

foreach (var movie in query)
{
    //something
}
在部分
ent.Id==Id
中,右侧的
Id
指的是一个参数值。我参考了教程,但当我执行这个时,执行不会进入foreach循环。我在foreach循环中创建了一个断点,并注意到它没有命中。有人能帮我找出这个问题吗?如果可能,请建议一种快速查看lambda表达式返回值的方法

多谢各位

编辑:

由于我第一次犯了一个巨大的错误,所以我更改了查询,但即使是现在,我也看不到任何成功

var query = db.DBMovieToCategory.Where(ent => ent.CategoryId == Id).Join(db.DBMovies,
r => r.MovieId,
l => l.Id,
(r, l) => new
{
    Id = l.Id,
    MovieName = l.Name,
    Year = l.Year,
    Category = l.Genre,
    PosterURL = l.PosterURL,
});

看起来您正试图通过将电影id与类别id相匹配来将电影加入类别。由于id是独立分配的,因此,如果碰巧您有一部电影和一个具有相同id的类别,您将只能收回记录

没有记录返回将是您从未进入
foreach
循环的原因


我看不到您的模型中定义了任何关系,因此DBMovies、DBCategories和DBMoviesToCategories不“知道”它们之间的关系。

所以结果查询为空?我不确定,但是,看起来您正试图通过将电影id与类别id匹配来将电影加入类别。这只会巧合地返回任何记录。visual studio无法调试lambda表达式。谢谢Ann L。这真是我的错。谢谢你指出这一点。我不得不改变很多。谢谢。顺便说一句,我没有像你提到的那样在表之间添加任何外键关系。仅仅加入他们就可以得到结果,不是吗?没关系。我想出来了。现在没事了。非常感谢。