我对这个问题感到非常兴奋。可能是睡眠不足......或者我可能只是变得愚蠢。
我有两张桌子:
a)人{Key,Name,LastName}
b)LogEntry {Key,PersonKey,Log,EntryTime}
我正在尝试获取Person和LogEntry的连接,其中LogEntry是给定Person的最新LogEntry。
我希望在五分钟内我没有“呃...”,当答案给我带来困难时。
答案 0 :(得分:2)
如果你在SQLServer中有关系,你应该在类Person中有类似的东西 Person.LogEntries。你可以这样做:
LogEntry logEntry =
Person.LogEntries.OrderByDescending(p => p.EntryTime).FirstOrDefault();
然后你可以检查logEntry是否为null如果不是我应该有该人的最后一个日志条目。
答案 1 :(得分:1)
如果没有设置关系,则可以通过以下方式完成接受的答案:
var r = Person
.GroupJoin(
LogEntry,
o => o.Key,
i => i.PersonKey,
(o,i) => new {o, Entry = i.OrderByDescending(x => x.EntryTime).First()});
答案 2 :(得分:0)
在Person的部分类上,创建一个类似于此的新属性:
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()
};