Frage

Ich versuche, LINQ to SQL zu lernen, und ich habe über die Funktion Loadwith herausgefunden hat. Alle Beispiele ich gefunden habe, werden alle Datensätze aus der Tabelle laden Sie in der Funktion Loadwith z angeben.

var dlo = new DataLoadOptions();
dlo.LoadWith<Blog>(b => b.Posts);
this.LoadOptions = dlo;

Was würde ich wissen, ob es möglich ist, nur der letzte Blogeintrag in diesem Beispiel zu laden?

Ich habe versucht,

dlo.LoadWith<Blog>(b => b.Posts.Max());

Aber es mag es nicht, dass die Syntax.

War es hilfreich?

Lösung

Sie können es tun AssociateWith verwenden. Dies funktioniert:

var options = new DataLoadOptions();
options.AssociateWith<Blog>(b => 
    b.Posts.Where(
        p1 => p1.SomeColumn == b.Posts.Max(p2 => p2. SomeColumn)
    ));

Auch wenn Sie die Informationen in eine separate Klasse werden geladen oder können einen anonymen eine verwenden, können Sie nur tun, die Abfrage wie:

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

Andere Tipps

Wenn Sie nur den letzten Beitrag wollen, dann vermute ich, dass einfach für diese Stelle Abfrage wird speziell effizienter sein, indem ein träges Laden als zwingt eine ‚eifrig‘ Last auf diese Weise.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top