2017-04-11 7 views
2

データベースから値の出現回数を取得しようとしています。それは失敗している。データベースからの照会に失敗しました

私の努力は、これは私がselect dselect new...を変更すると、それはので、私は、クエリの一部がOKであることを知って正常に動作し、次の例外

"DbExpressionBinding requires an input expression with a collection ResultType.\r\nParameter name: input" 

を投げ続ける

 var dc = new Dal.Entities(); 
     var query = (from d in dc.Instruments 
         where d.Src.ToLower().Contains("other.png") 
         select new 
         { 
          count = d.Src.Count(), 
          key = d.Src 
         } 
        ); 

です。

なぜ私は見つけた各文字列のCountを取得できないのか分かりません。私は何を間違えたのですか?

編集

私のデータベースは

Src (column title) 
my value 
my other value 
my value 

であれば、私は

my value, 2 
my other value, 1 
+0

試し 'd.Src.Length'代わり – octavioccl

+0

' WHERE'の部分は、すべてのデータをフィルタリングし、あなただけの 'そうother.png'に残ります最後の単純な「カウント」が機能します。なぜ「グループ」が必要なのですか? –

+0

何を数えようとしているのかははっきりしません。現在のコードは、フィルタに一致する 'Src'フィールドの文字の数を取得しようとしています(失敗しています)。 –

答えて

3

 var query = from d in dc.Instruments 
        where d.Src.ToLower().Contains("other.png") 
        group d by d.Src into g 
        select new 
        { 
         count = g.Count(), 
         key = g.Key 
        }; 
+0

私は文字列の長さを探しているのではなく、文字列がデータベース内で発生する時間を探しています。私はひどく明確に書かれた私の投稿をうまく受け入れるでしょう – MyDaftQuestions

+0

@MyDaftQuestions、私は私の答えを更新しました – octavioccl

0
var items = dc.Instruments 
    .Where(p => p.Src.ToLower().Contains("other.png")) 
    .Count(); 

または

の結果を得ることを望みましたあなたは、その後、グループに必要な0
関連する問題