我有一个数据库表,其字段的值如
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
也就是说,第一个是正确的,而在第二个中,字段正在缩短,但分组是错误的。
有人对此发光吗?
安德鲁
答案 0 :(得分:0)
你使用linq到sqlite的连接器是什么?感觉它可能是该连接器中的一个错误。
e.g。查看dotconnect的修订表 - http://www.devart.com/dotconnect/sqlite/revision_history.html - 然后在最近几个月里他们找到并修复了大量的错误组 - 我相信其他人可能还有。
除非您绝对需要sqlite,否则您可以考虑切换到SQL CE - 在这种情况下,您可以从Microsoft获得更多对Linq的直接支持。