我對此有這樣的價值觀LINQ到SQL古怪
AAAA
BBBB0001
BBBB0002
CCCC
CCCC
CCCC
字段的數據庫表,我想知道有多少AAAAs,BBBBs和CCCCs有(1,2和3這裏) 。
如果我在一個陣列設置了幾個測試查詢的LinqPad使用這些值:
var Table = new [] {"AAAA", "BBBB1", "BBBB2", "CCCC", "CCCC", "CCCC"};
var query1 = Table.GroupBy(d => d).Select(g => new { K = g.Key, C = g.Count()});
query1.Dump();
var query2 = Table.GroupBy(d => d.Substring(0, 4)).Select(g => new { K = g.Key, C = g.Count()});
query2.Dump();
然後我得到我所期望的結果 - 通過密鑰和第二分組分組第一案按鍵的前四個字符
AAAA 1
BBBB1 1
BBBB2 1
CCCC 3
AAAA 1
BBBB 2
CCCC 3
這很好。但是,如果通過一個SQLite表更換陣列並運行相同的查詢,我所得到的是
AAAA 1
BBBB1 1
BBBB2 1
CCCC 3
AAAA 1
BBBB 1
BBBB 1
CCCC 3
也就是說,第一個是正確的,而在第二,本場被正確地縮短,但分組是錯誤的。
有人對此有所瞭解嗎?
Andrew
SQLite不是LINQ to SQL,是嗎?這聽起來像一個,但在LINQ to SQLite提供者。我建議你看看生成的SQL ... –
SQLite生成的SQL最有可能不正確。可能在關鍵截斷之前完成分組。你可以發佈正在生成的內容嗎? – dlev
謝謝兩個 - 它確實是一個錯誤 - 添加一個AsEnumerable()並強制組在本地完成是一個修復。 – amaca