6

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());

しかし、その構文は好きではありません。

4

2 に答える 2

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()
            }
于 2009-04-02T17:02:40.173 に答える
1

最後の投稿のみが必要な場合は、この方法で「熱心な」読み込みを強制するよりも、遅延読み込みを使用すると、その投稿を具体的にクエリする方が効率的だと思います。

于 2009-04-02T14:58:10.150 に答える