0

私は次のLINQを思いついたのですが、2つではなく1つのクエリでこれを実行できるはずだと考えずにはいられません。誰か助けてもらえますか?

アイデアは、3つのテーブルを内部結合し、1つでグループ化することです。

var q1 = from er in ExportRules
    join per in PlaceExportRules on er.ExportRulesID equals per.ExportRulesID
    select new 
    {
        PlaceID = per.PlaceID, 
        Description = er.Description, 
        Tag = er.TagName,
        ExportName = per.ExportName,
        ExportAddress = per.ExportAddress
    };

var q2 = from p in Places 
    join rules in q1 on p.PlaceID equals rules.PlaceID into joined2
    where joined2.Any()
    orderby p.PlaceName
    select new {Place = new {p.PlaceID, p.PlaceName}, joined2};
4

1 に答える 1

2

まあ、あなたは物事を括弧で囲むことができます:

var query = from p in Places
            join rules from 
                 (from er in ExportRules
                  join per in PlaceExportRules 
                    on er.ExportRulesID equals per.ExportRulesID
                  ...)
              on p.PlaceId equals rules.PlaceId into joined2
            where joined2.Any()
            orderby p.PlaceName
            select new {Place = new {p.PlaceID, p.PlaceName}, joined2};

ただし、個人的にはおそらく 2 つのクエリとして残しておきます。これはより明確であり、パフォーマンスに影響を与えません。コードの最初のステートメントが実際にクエリを実行するわけではありません。

于 2012-06-21T11:14:35.647 に答える