2

クライアント名の列を含むテーブルがあります。列に複数回表示される約10〜15の個別のクライアントがあります。すべての個別のクライアントを一覧表示し、各クライアントのカウントを実行して、各クライアントが列に表示される回数を表示するクエリを実行する方法はありますか?SQLで一時列を割り当てるために使用できることは知っていますが、私はLINQを初めて使用し、これが可能かどうかわかりません。

どんな助けでも素晴らしいでしょう、ありがとう。

4

4 に答える 4

5

GROUP BYaとを使用する SQL と同じように、次のようにしますCOUNT

SELECT name, COUNT(*)
FROM customers
GROUP BY name

LINQでは、次のようにGroupBy(...)andを使用します。Count()

var res = src.Clients
    .GroupBy(c => c.Name)
    .Select(g => new {
        Name = g.Key
    ,   Count = g.Count()
    });
于 2013-02-01T15:09:50.240 に答える
3

このようなもの?

クエリ構文:

from r in someTable
group r by r.ClientId into grp
select new
    {
        ClientId = grp.Key,
        Occurrences = grp.Count(),
    }

メソッドの構文として:

someTable
    .GroupBy(r => r.ClientId)
    .Select(grp => new
        {
            ClientId = grp.Key,
            Occurrences = grp.Count(),
        });

ClientId区別したい列はどこですか。

于 2013-02-01T15:09:11.180 に答える
3

itemsを持つ要素が含まれていると仮定しますClientName

LinqGroupByメソッドを使用します。

var result = (from item in items
              group item by item.ClientName 
              into g  // g is the group
              select new 
              {
                  ClientName = g.Key,  // g.Key contains the key of the group ;) -> here the common "ClientName"
                  Count = g.Count()  // g is an enumerable over the elements of the group, so g.Count() gives you the number of elements in the group
              });
于 2013-02-01T15:08:54.867 に答える
2

次のようなことができます。

純粋なlinq :

var query = from item in list
            group by item.name into gr
            let count=gr.Count()
            orderby count
            select new {Value = gr.Key, Count=count }

ラムダ式の場合:

var query= entity.GroupBy(s=>s.Name).
                  Select(x=> new {Value = x.Key,Count=x.Count()}).
                  OrderBy(s=>s.Count);

linq の詳細については、こちらをご覧ください: Linq Samples.

ところで、何かを尋ねる前にもっと検索する必要があります。

于 2013-02-01T15:14:02.303 に答える