使用GROUP BY LINQ获取每列的特定计数

时间:2017-05-30 05:12:17

标签: c# linq datagrid

我想使用LINQ GroupBy获取列中每个项目的计数,但是我没有获得预期的输出。 示例:

 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)

我认为count()Count()中的预期输出中会产生问题,因此我建议您在null中添加条件以排除那些具有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(); 值的项目。所以你的查询将如下所示:

  <input type="text" name="num1" id="num1" onkeyup="sum()">
  <input type="text" name="num2" id="num2" onkeyup="sum()">
  <input type="text" name="num2" id="result">

  <script>
     function sum()
     {

        var number1 = document.getElementById('num1').value;
        var number2 = document.getElementById('num2').value;

        if (number1 == '') {
           number1 = 0
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }
        else if(number2 == '')
        {
           number2 = 0;
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }
        else
        {
           var num3 = parseInt(number1) + parseInt(number2);
           document.getElementById('result').value = num3;
        }

     }
  </script>