2017-05-30 6 views
-1

LINQ GroupByを使用して列内の各項目の数を取得したいと思いますが、期待される出力が得られません。 例:GROUP BY LINQを使用して各列の特定のカウントを取得

NAME  | Items | Items2 
    1.ken | asd | zxc 
    2.kent | null | zwe 
    3.ken | qwe | null 

期待出力:

NAME | Items | Items2 
ken | 2 | 1 
kent | 0 | 1 

コード:上記のコードは動作していない

var Data=Items.GroupBy(z=>z.Name).Select(s=>new { Name=s.Key, Items=s.Count(q=>q.Items),Items2=s.Count(x=>x.Items2) }).ToList(); 

+1

出力はどのようになっていますか?または任意のエラー –

+0

あなたは常に2つの列の項目と項目2を持つつもりですか、それとももっと多く持っていますか? – jdweng

+0

s.Count(q => q.Items)とs.Count(x => x.Items2)にエラーがあります –

答えて

1

私はnullが期待される出力にcount()で問題を作成すると思うので、私はあなたがnull値を有するこれらの項目を除外するためにCount()に条件を追加することをお勧めします。したがって、クエリは次のようになります:

var Data=Items.GroupBy(z=>z.Name) 
       .Select(s=>new { 
           Name=s.Key, 
           Items=s.Count(q=>q.Items!=null), 
           Items2=s.Count(x=>x.Items2!=null) }) 
       .ToList(); 
+0

q.Itemsとx.Items2の赤い線。投稿されたコードと同じエラーです。 @ un-lucky –

+0

@KennethMontealto:エラーは何を言いますか? 'Items'の型は何ですか? 'Items'や' Items2'のようなプロパティを持っていますか? –

+0

暗黙のうちにタイプ 'string'を 'bool'に変換できません。 –

関連する問題