LINQ to SQL奇怪

时间:2011-07-14 15:19:27

标签: linq linq-to-sql sqlite

我有一个数据库表,其字段的值如

AAAA
BBBB0001
BBBB0002
CCCC
CCCC
CCCC

我想知道有多少AAAAs,BBBB和CCCC(这里有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

也就是说,第一个是正确的,而在第二个中,字段正在缩短,但分组是错误的。

有人对此发光吗?

安德鲁

1 个答案:

答案 0 :(得分:0)

你使用linq到sqlite的连接器是什么?感觉它可能是该连接器中的一个错误。

e.g。查看dotconnect的修订表 - http://www.devart.com/dotconnect/sqlite/revision_history.html - 然后在最近几个月里他们找到并修复了大量的错误组 - 我相信其他人可能还有。


除非您绝对需要sqlite,否则您可以考虑切换到SQL CE - 在这种情况下,您可以从Microsoft获得更多对Linq的直接支持。