我有以下语法。我已经设置了sql约束(即数据模型中的外键关系等)。我想知道如何使用lambda表达式编写此语句。可能吗?我已经阅读了关于热切加载的文章,但不确定如何应用,如果我可以更简洁地编写查询?
var nominations = from n in ctx.Nominations
join c in ctx.Nominees
on n.NominationId equals c.NominationId
where c.NomineeADUserName == UserName
select n;
答案 0 :(得分:1)
您可以使用Method语法编写相同的查询,如下所示:
ctx.Nominations.Join(ctx.Nominees,
n=>n.NominationId,
c=>c.NominationId,
(n,c)=>new {c, n})
.Where(x=>x.c.NomineeADUserName == Username)
.Select(x.n);
我认为重要的是要使其易读而不简洁。您的版本更具可读性。
无论您是编写方法语法还是查询语法,查询都将以惰性方式进行评估。如果您愿意,可以通过在任一查询结束时调用ToList()来强制执行加载。
如果您还要加载导航属性(相关实体),则必须先调用Include方法EntitySet,然后再将其作为查询的一部分