2009-07-10 49 views
13

là gì bình đẳng dưới sql trong LINQLINQ (MIN && MAX)

select MIN(finishTimestamp) AS FromDate, MAX(finishTimeStamp) AS ToDate From Transactions 

??

from t in Transactions 
select new { 
      FromDate = ?, 
      ToDate = ? 
     } 

Cảm ơn

Trả lời

18

Bạn chỉ có thể làm

var transactionDates = from t in Transactions 
         select t.FinishTimeStamp; 

var dates = new { 
        FromDate = transactionDates.Min(), 
        ToDate = transactionDates.Max() 
       }; 
0

Bạn cũng có thể sử dụng chức năng tổng hợp nếu bạn muốn (Ví dụ trong VB)

Dim max = Aggregate tMax In Transactions Select tMax Into Max() 
36

Để sử dụng nhiều uẩn trong LINQ to SQL, trên một bảng, mà không cần nhóm, chỉ Con đường tôi đã tìm thấy để tránh làm nhiều thắc mắc, là để thực hiện một "giả nhóm":

var q = from tr in dataContext.Transactions 
     group tr by 1 into g // Notice here, grouping by a constant value 
     select new 
     { 
      FromDate = g.Min(t => t.InvoiceDate), 
      ToDate = g.Max(t => t.InvoiceDate) 
     }; 

Kinda hacky, nhưng SQL được tạo ra là sạch, và bằng cách làm như vậy, bạn chỉ cần lập một truy vấn để kho dữ liệu.

+0

+1 thú vị! – womp

+0

chỉ để cho bạn biết: "nhóm theo 1" không hoạt động với NHibernate 3.2 – devio

Các vấn đề liên quan