実際に新しいプロジェクションを作成しようとしている場合を除きselect
、最後まで a の使用を避けることができます。
List<Categories> myCats = (from city in myCities
where city.CityName == myCityName
//select city
from ids in city.IDs
where ids != 4
select ids).ToList();
個人的には、クエリを細かく分割するのが好きです。
var matchingCities = from city in myCities
where city.CityName == myCityName
select city;
var matchingCityIds = (from city in matchingCities
from id in city.IDs
select id).ToList();
このアプローチには、主に次の 2 つの利点があります。
- 変数名は自動的に「ドキュメント」を提供し、他の開発者が各変換の意図を確認できるようにします。
- 各変換をステップ オーバーして、必要な結果が得られたことを確認できるため、デバッグが容易になります。
ただし、ある選択を別の選択に従う必要がある場合は、into
キーワードを使用してクエリを連鎖させることができます。
List<Categories> myCats = (from city in myCities
where city.CityName == myCityName
// Not typically recommended
select city.IDs into cityIDs
from id in cityIDs
where id != 4
select id).ToList();