我正在尝试学习LINQ to SQL,并且我发现了LoadWith函数。我发现的所有示例都将加载您在LoadWith函数中指定的表中的所有记录,例如
var dlo = new DataLoadOptions();
dlo.LoadWith<Blog>(b => b.Posts);
this.LoadOptions = dlo;
我想知道的是,是否可以在此示例中加载最后一篇博文?
我试过
dlo.LoadWith<Blog>(b => b.Posts.Max());
但它不喜欢那种语法。
答案 0 :(得分:7)
你可以使用AssociateWith来做到这一点。这将有效:
var options = new DataLoadOptions();
options.AssociateWith<Blog>(b =>
b.Posts.Where(
p1 => p1.SomeColumn == b.Posts.Max(p2 => p2. SomeColumn)
));
此外,如果您要将信息加载到单独的类中或者可以使用匿名类,则可以执行以下查询:
var query = from b in context.Blogs
//probably some where you already have
select new MyBlogs // or with no type in case it is anonymous
{
AColumn = b.AColumn, //map any other values
LatestPost = b.Posts.Where(
p1 => p1.SomeColumn == b.Posts.Max(p2 => p2. SomeColumn)
)).ToList()
}
答案 1 :(得分:1)
如果您只想要上一篇文章,那么我怀疑只是查询该帖子,使用延迟加载比使用这种方式强制'急切'加载更有效。