Where句を動的に追加しようとしているオブジェクトIQueryableがあります。これは、Listingオブジェクトの列に最適ですが、条件付きで、ListingID、AmenityID列を持つナビゲーションプロパティ(ListingAmenities)にIN句を追加したいと思います。
私はcritiera.AmenityIDを持っています。これには、結果をフィルタリングしたいアメニティが含まれている可能性があります。
配列にamenityIDがある場合、次のことを達成しようとしています
select * from Listings l inner join ListingAmenities a on l.ListingID = a.ListingID where a.AmenityID IN(1,2,3)
これが私のコードです(私はEF5を使用しています)
if (criteria.AmenityIDs.Count > 0)
{
listings = listings.Where(x => x.ListingAmenities.Any(y => y.AmenityID == criteria.AmenityIDs));
}
もちろん、これは機能しません。重要な注意点は、これらのWHERE句を動的に追加しているため、IQueryableオブジェクトを構築していることです。