2011-07-14 4 views
1

私はLINQは

AAAA 
BBBB0001 
BBBB0002 
CCCC 
CCCC 
CCCC 

ような値を持つフィールドを持つデータベーステーブルを持っていると私は、BBBBsとCCCCsがあるどのように多くのAAAAs知っていただきたいと思います(ここでは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(); 

は、私が期待する結果を得る - キーでグループ化された最初のケ​​ースでグループ化された第二にキーの最初の4文字で

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

SQLiteはLINQ to SQLではありませんか?これは、LINQ to SQLiteプロバイダのように思えます。私は生成されたSQLを見てみることをお勧めします... –

+0

生成されるSQLは、おそらくSQLiteのために正しくない可能性があります。キーの切り捨て前にグループ化が行われている可能性があります。生成されているものを投稿できますか? – dlev

+0

ありがとうございます - 両方とも、バグであることが判明 - AsEnumerable()を追加し、ローカルで実行されるグループを強制的に修正します。 – amaca

答えて

0

linqからsqliteにどのコネクタを使用していますか?そのコネクタのバグである可能性が高いと感じます。

dotconnect - http://www.devart.com/dotconnect/sqlite/revision_history.htmlのリビジョンテーブルを見ると、最近数ヶ月で見つけて修正したバグのグループがたくさんあります。そこに他の人がいる可能性もあります。


あなたは絶対にsqliteのを必要としない限り、あなたは、SQL CEへの切り替えを検討する可能性が - その場合には、MicrosoftからのLINQのためのより直接的なサポートを得るだろう。

+0

ありがとうスチュアート - 私はこのインスタンスではSqliteを使用することを余儀なくされています。 – amaca