0

LINQ で 3 つのテーブルに参加しようとしています。

var fromCities = from c in cityRepository.Cities
                             join r in routeRepository.Routes on c.Id equals r.FromCityId
                             join cr in rentDetailRepository.CarRentDetails on cr.CityId equals c.Id
                             select c;

2 番目の結合ステートメントに cr と c が存在しないことがわかりましたか? 誰か助けてくれませんか?

4

1 に答える 1

3

最後の結合の順序を変更します。

...
join cr in rentDetailRepository.CarRentDetails on c.Id equals cr.CityId 

join 句 (C# リファレンス)

join 句は等結合を実行します。つまり、2 つのキーが等しい場合にのみ一致を判断できます。「より大きい」または「等しくない」などの他のタイプの比較はサポートされていません。すべての結合が等結合であることを明確にするために、結合句では == 演算子の代わりに equals キーワードを使用します。equals キーワードは結合句でのみ使用でき、1 つの重要な点で == 演算子と異なります。equals では、左のキーは外側のソース シーケンスを消費し、右のキーは内側のソース シーケンスを消費します。外側のソースは equals の左側のスコープにのみあり、内側のソース シーケンスは右側のスコープにしかありません。

于 2012-07-01T11:43:12.087 に答える