我對這一個有一段時間。可能是缺乏睡眠...或者我只是啞巴。Linq-to-sql一對多最大
我有2個表:
一)人{重點,名稱,姓氏}
B)LogEntry {重點,PersonKey,日誌,EntryTime}
我試圖讓加盟者和LogEntry LogEntry是給定Person的最新LogEntry。
我希望在五分鐘內我不會去「唔......」,當時答案讓我很難受。
我對這一個有一段時間。可能是缺乏睡眠...或者我只是啞巴。Linq-to-sql一對多最大
我有2個表:
一)人{重點,名稱,姓氏}
B)LogEntry {重點,PersonKey,日誌,EntryTime}
我試圖讓加盟者和LogEntry LogEntry是給定Person的最新LogEntry。
我希望在五分鐘內我不會去「唔......」,當時答案讓我很難受。
如果在SQLServer的關係,你應該在類Person像 Person.LogEntries。你可以這樣做:
LogEntry logEntry =
Person.LogEntries.OrderByDescending(p => p.EntryTime).FirstOrDefault();
然後你就可以檢查是否logEntry爲null,如果不是我應該有一個人最後的日誌條目。
在對人的部分類,創建一個類似的新屬性:
public partial Person
{
public LogEntry RecentLogEntry
{
get
{
return LogEntries.OrderByDescending(l => l.EntryTime).FirstOrDefault();
}
}
}
我相信這(或類似的東西)應該工作,雖然這是從內存。當然,這依賴於你們之間的關係。
如果您希望您的選擇記錄時要做到這一點,你可以試試這個:
var people = from p in context.People
select new
{
Person = p,
LatestLogEntry = p.LogEntries.OrderByDescending(l => l.EntryTime).FirstOrDefault()
};
如果一個人沒有關係的建立,公認的答案,可以通過做:
var r = Person
.GroupJoin(
LogEntry,
o => o.Key,
i => i.PersonKey,
(o,i) => new {o, Entry = i.OrderByDescending(x => x.EntryTime).First()});
我的大腦刺入嘗試使用最大謝謝! – Daniel 2009-02-04 16:36:05