0

Db for Customers とそれに関連する Ethnicity に 2 つの個別のテーブルがあります。顧客テーブルには、民族の外部キー ID が保持されます。レポート目的で各民族の合計を表示する Linq クエリを作成したいと思います。たとえば、次のようなもの...

 +------------+------------------+
 |  Ethnicity | Customer Count   |
 +------------+------------------+
 |  White     |   100            |
 +------------+------------------+
 |  Black     |   50             |
 +------------+------------------+
 |  Chinese   |   20             |
 +------------+------------------+ etc...

これまでのところ、次の 2 つの LINQ クエリがあります。

var customers = repository.GetAll<Customer>();
var ethnicities = repository.GetAll<Ethnicity>();

var query1 = customers.GroupBy(c => c.EthnicityId).Select(g => new { Key = g.Key, Count = g.Count() });

クエリ 1 は合計を表示しますが、テキスト (EthnicityType) ではなく民族 ID を使用します。

var query2 = from c in customers
             join e in ethnicities on c.EthnicityId equals e.Id
             where (c.EthnicityId == e.Id)
             select new { Ethnicity = e.EthnicityType, Count = ??? };

クエリ 2 は 2 つのテーブルを結合しますが、これをグループ化して、個々のレコードではなく合計を取得する方法を教えてください。これが理にかなっていることを願っています。これについて助けていただければ幸いです。

4

3 に答える 3

0

私はこれがうまくいくと思います:

var query2 = 
    from e in ethnicities
    join c in customers on e.Id equals c.EnthnicityId
    into g
    where g.Any()
    select new { Ethnicity = g.First(), Count = g.Count() };
于 2013-05-13T11:21:40.607 に答える