我有一个SQL Server表,其中包含以下字段:
我需要做的是使用LINQ to SQL拉出EACH SessionId的FIRST记录(理想情况下是lambda,但查询语法会很有用)
使用t-SQL执行此操作相对简单....
SELECT al.Message, al.SessionId, al.Timestamp
FROM AppLog AS al
WHERE al.Timestamp =
(select MIN(al2.Timestamp) from ApplicationLog as al2 where al2.SessionId = al.SessionId)
我尝试使用Lambda查询(使用连接)做同样的事情,但它只是不起作用...
非常感谢任何/所有帮助。
提前致谢
格里夫
答案 0 :(得分:1)
我不知道我是否过于简单化 - 但如果这是一张桌子,那么这应该有用吗?
db.Applog.GroupBy(a=>a.SessionID).Select(g=>g.OrderBy(m=>m.Timestamp).First());
答案 1 :(得分:1)
您尝试过使用linquer? http://www.sqltolinq.com/
查询语法可能看起来比lambda更好 -
var x = from al in db.AppLog
where al.Timestamp ==
(from al2 in db.ApplicationLog on al2.SessionId equals al.SessionID
select al2.Timestamp).Min())
select new
{
al.Message,
al.SessionId,
al.Timestamp
};