クライアント名の列を含むテーブルがあります。列に複数回表示される約10〜15の個別のクライアントがあります。すべての個別のクライアントを一覧表示し、各クライアントのカウントを実行して、各クライアントが列に表示される回数を表示するクエリを実行する方法はありますか?SQLで一時列を割り当てるために使用できることは知っていますが、私はLINQを初めて使用し、これが可能かどうかわかりません。
どんな助けでも素晴らしいでしょう、ありがとう。
クライアント名の列を含むテーブルがあります。列に複数回表示される約10〜15の個別のクライアントがあります。すべての個別のクライアントを一覧表示し、各クライアントのカウントを実行して、各クライアントが列に表示される回数を表示するクエリを実行する方法はありますか?SQLで一時列を割り当てるために使用できることは知っていますが、私はLINQを初めて使用し、これが可能かどうかわかりません。
どんな助けでも素晴らしいでしょう、ありがとう。
GROUP BY
aとを使用する 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()
});
このようなもの?
クエリ構文:
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
区別したい列はどこですか。
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
});
次のようなことができます。
純粋な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
.
ところで、何かを尋ねる前にもっと検索する必要があります。