我試圖找到我的問題的答案,但我不能。 我有ID,WorkerID,Function(int)和DateTime表。每個工人每天都有多個記錄。對於所有工作人員,我只需要每天獲得第一筆記錄。 該查詢給出的結果,我想:SQL/LINQ選擇所有與2列組
SELECT WorkerID, MIN(DateTime) AS DateTime
FROM Records
GROUP BY WorkerID, LEFT(DateTime, 10)
ORDER BY WorkerID
但我想選擇所有的列(ID,WorkerID,功能和日期時間)。我怎樣才能做到這一點? 此外,我需要這個查詢ASP.NET MVC3應用程序,所以如果任何人都可以在LINQ中爲我寫這個,並解釋如何將該查詢轉換爲IEnumerable(Record)或IQuerible(Record),我會非常感激。 在此先感謝你們,希望你能拯救我。
編輯:您的LINQ查詢工作,但我有很多關於性能的問題,因爲使用了很多視圖,而不是表。現在我切換到Table,我想直接在Table上查詢。結構是一樣的,而不是WorkerID,我有ETAG,這是相同的。但我現在有問題。上面提到的SQL查詢給了我大約50k的結果,這是正確的,但是現在你的LINQ查詢只給了我9k,所以有些錯誤。下面是查詢:
from d in Records
group d by new { d.ETAG, Date = d.DateTime.Value.Year + d.DateTime.Value.Month + d.DateTime.Value.Day } into g
orderby g.Key.ETAG
select g.OrderBy(e => e.DateTime).FirstOrDefault()
請,你能不能幫我這一個...
我得到這個「LINQ to Entities不支持指定的類型成員'Date',只支持初始化器,實體成員和實體導航屬性。 – dodjavola
這可能會幫助你http://stackoverflow.com/questions/7083871/date-is-not-supported-in-linq-to-entities-only-initializers-entity-members –
它與Date = d.DateTime一起工作。 Value.Year + d.DateTime.Value.Month + d.DateTime.Value.Day,但它速度很慢,大約需要20秒來處理10k行,而表格大約有130k:/ – dodjavola