C# · 12月 23, 2021

c# – LINQ to SQL急切加载条件

我正在尝试学习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());

但它不喜欢那种语法.

解决方法 你可以使用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() }