我在我的項目中使用BLToolKit,我試圖讓這個工作。我不喜歡的是,我試圖平均一堆臨時的分鐘,但正在生成的select語句按分鐘分組,但隨後選擇原始時間。我認爲我正確地做了linq表達式(但是再次,我沒有得到我期望的結果)。 (這是C#,如果你在意)任何人都知道什麼是錯的?BLToolKit,Linq查詢,SQL不是我所期望的
var test = (from r in db.SensorReadingRaws
where r.TimeLogged < DateTime.Now.AddMinutes(-2)
group r by new
{
Sensor = r.SensorNumber,
//group time down to the minute
Time = r.TimeLogged.AddSeconds(-1 * r.TimeLogged.Second).AddMilliseconds(-1 * r.TimeLogged.Millisecond)
} into grouped
select new SensorReading
{
SensorNumber = grouped.Key.Sensor,
TimeLogged = grouped.Key.Time,
Reading = (int)grouped.Average(x => x.Reading)
}).ToList();
textBox1.Text = db.LastQuery;
和結果查詢是這樣的
SELECT
[r].[SensorNumber],
[r].[TimeLogged],
Avg([r].[Reading]) as [c1]
FROM
[SensorReadingRaw] [r]
WHERE
[r].[TimeLogged] < @p1
GROUP BY
[r].[SensorNumber],
DateAdd(Millisecond, Convert(Float, -DatePart(Millisecond, [r].[TimeLogged])), DateAdd(Second, Convert(Float, -DatePart(Second, [r].[TimeLogged])), [r].[TimeLogged])),
[r].[TimeLogged]
我看來,它是與BLToolKit一個錯誤,因爲試圖用不同版本的bltoolkit的同樣的事情產生完全不同的結果。 – XenoPuTtSs 2012-02-10 15:30:40