LINQ到SQL奇怪之处

LINQ到SQL奇怪之处,linq,linq-to-sql,sqlite,Linq,Linq To Sql,Sqlite,我有一个数据库表,其中的字段具有如下值 AAAA BBBB0001 BBBB0002 CCCC CCCC CCCC 我想知道有多少AAAAs、BBBBs和CCCC(这里是1、2和3) 如果我在LinqPad中使用数组中的这些值设置了两个测试查询: var Table = new [] {"AAAA", "BBBB1", "BBBB2", "CCCC", "CCCC", "CCCC"}; var query1 = Table.GroupBy(d => d).Select( g =>

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

AAAA
BBBB0001
BBBB0002
CCCC
CCCC
CCCC
我想知道有多少AAAAs、BBBBs和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
也就是说,第一个字段是正确的,而第二个字段是正确缩短的,但分组是错误的

有人能解释一下吗


Andrew

您的linq到sqlite使用什么连接器?感觉它很可能是该连接器中的一个bug

e、 g.查看dotconnect的修订表——然后是他们在最近几个月发现并修复的大量分组错误——我相信其中可能还有其他错误



除非你绝对需要SQLite,否则你可以考虑切换到SQL CE——在这种情况下,你会得到来自微软的LINQ更直接的支持。这听起来像是一个从LINQ到SQLite的提供程序。我建议您查看生成的SQL…很可能生成的SQL对于SQLite是不正确的。分组可能在密钥截断之前完成。你能发布生成的内容吗?谢谢二者-它确实是一个bug-添加一个AsEnumerable()并强制组在本地完成是一个修复。谢谢Stuart-我在这个例子中被迫使用Sqlite。