Linq to SQL Server - 难度与子查询示例

时间:2012-02-07 18:04:11

标签: linq-to-sql c#-4.0

我有一个SQL Server表,其中包含以下字段:

  • SessionId(guid)
  • 消息(varchar)
  • 时间戳(日期时间)

我需要做的是使用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查询(使用连接)做同样的事情,但它只是不起作用...

非常感谢任何/所有帮助。

提前致谢

格里夫

2 个答案:

答案 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
  };