У меня есть отношение Parent / Child Table с ChildTable, связывающим обратно с ParentTable через внешний ключ ParentId. В ChildTable есть несколько записей для каждой записи ParentTable. Для тех, кто пользуется, вам нравятся элементарные визуальные эффекты, вот диаграмма.
ParentTable
------------
+Id
Date
ChildTable
------------
+Id
ParentId
Date
То, что я пытаюсь сделать, это возвращать только ОДНУ запись для каждого элемента ParentTable, который присоединяется к последнему значению даты ChildTable (обратите внимание, а не к значению Date родительского элемента). Результаты будут выглядеть так:
ParentTable::Id ParentTable::Foo ChildTable:Id ChildData::Foo ChildData::Date
--------------- ---------------- ------------- -------------- ---------------
55 Other Values 700 Other values 12/1/2010
1 " 1000 " 11/30/2010
10 " 214 " 10/31/2010
Важно, чтобы ChildData :: Date сортировалась по убыванию.
Кажется, это должно быть просто, но я борюсь с его аспектами LinQ2SQL. Я все еще жду своего "ах-ха" момента, когда я смогу думать в Линке.
Вот окончательный ответ, спасибо Уинстону:
var results =
from p in parent
join c in (from c2 in child orderby c2.Date descending select c2)
on p.Id equals c.ParentId into childGroup
select new { ParentId=p.Id, ParentDate=p.Date, ChildDate=childGroup.First().Date } into NewResult
orderby NewResult.Activity descending
select NewResult