私は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
あり、第二に、フィールドが正しく短縮されている間、最初は、正しいですが、グループ化が間違っています。
誰もがこれにどのような光を投じる?
アンドリュー
SQLiteはLINQ to SQLではありませんか?これは、LINQ to SQLiteプロバイダのように思えます。私は生成されたSQLを見てみることをお勧めします... –
生成されるSQLは、おそらくSQLiteのために正しくない可能性があります。キーの切り捨て前にグループ化が行われている可能性があります。生成されているものを投稿できますか? – dlev
ありがとうございます - 両方とも、バグであることが判明 - AsEnumerable()を追加し、ローカルで実行されるグループを強制的に修正します。 – amaca