在C#中调试Lambda表达式

时间:2014-03-23 14:40:11

标签: c# asp.net sql-server lambda

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

enter image description here

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

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指的是参数值。我提到了this教程,但是当我执行它时,执行不会进入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,
});

1 个答案:

答案 0 :(得分:1)

通过将电影ID与类别ID匹配,您似乎正在尝试将电影加入到类别中。由于ID是独立分配的,因此只有在您拥有电影和具有相同ID的类别时才会获得记录。

不记录任何记录将是您永远不会进入foreach循环的原因。

我看不到您的模型中定义的关系,因此DBMovies,DBCategories和DBMoviesToCategories不会知道"他们彼此相关。