-3

他の質問をいくつか読みましたが、回答を得ることができませんでした。

私はLinqの初心者です。私は3つのテーブルを持っています。

都市 (ID、名前)

専門(ID、名前)

クォータ (id、cityId、specialityId、qty)

したがって、都市の専門分野に割り当てがあります。これを都市別にグループ化してリストしようとしています。このようなもの:

都市: ニューヨーク

  • 特技A:15
  • 特技B:12
  • 特技C:10

都市: パリ

  • スペシャリティA:10
  • 特技B:8

等々。

誰かがそれを手伝ってくれますか?

加算

私は実際に準備ができたコードを求めていませんでした。私はもっ​​と明確にすべきだと思います。

テーブルに参加できますが、それを都市ごとにグループ化する方法がわかりません。

たとえば、これはすべてを結合します

from cota in Cotas
join cidade in Cidades on cota.CidadeId equals cidade.Id
join especialidade in EspecialidadeMedicas on cota.EspecialidadeId equals especialidade.Id
select new { Qty = cota.Quantidade, City = cidade.Nome, Specialty = especialidade.Nome}

Obs: 言語はポルトガル語で、オブジェクトの作成を翻訳しましたが、Quantidade は Quantity、EspecialidadeMedica は医療専門分野、Cidade は City です。

このクエリの結果は次のとおりです。

Qty | City       | Specialty 

10    Campinas     Pediatria     

15    Campinas     Cardiologia

5     Campinas     Ortopedia     

10    Sumaré       Pediatria                                                                                                                                                                                                                                                       

15    Sumaré       Cardiologia                                                                                                                                                                                                                                                     

14    Hortolândia  Cardiologia                                                                                                                                                                                                                                                     

5     Hortolândia  Ortopedia   

それを都市ごとにグループ化し、都市名と特産品と数量のリストを持つオブジェクトを返すことができるようにしたいと考えています。

4

1 に答える 1

0

それで、私はもっと研究をすることで必要なものを手に入れました。

私が探していたものを達成するためのコードは次のとおりです。

from cidade in Cidades
join lista in 
        (
            from cota in Cotas 
             join especialidade in EspecialidadeMedicas on cota.EspecialidadeId equals especialidade.Id
            select new {
                CidadeId = cota.CidadeId, CotaId=cota.Id, Quantidade=cota.Quantidade,
                EspecialidadeId=especialidade.Id, Especialidade=especialidade.Nome
            }
        ) on cidade.Id equals lista.CidadeId into listaCota
select new {CityId=cidade.Id, cityName=cidade.Nome, quotaList=listaCota}

そうすれば、私は次のようになります:

LinqPad 4 の結果

于 2013-01-27T17:34:04.860 に答える