これにより、今日は問題が尽きることがありません。この簡単なクエリがあります
var result =
DataContext.Accommodations.Where(a =>
(criteria.MinPrice == null || a.AccommodationRates.Any(r => r.From >= criteria.MinPrice)) &&
(criteria.MaxPrice == null || a.AccommodationRates.Any(r => r.To <= criteria.MaxPrice)) &&
(criteria.Locations == null || criteria.Locations.Count == 0 || a.AccommodationPlaceJoins.Any(j => criteria.Locations.Contains(j.Place.PlaceName)))
);
このクエリの最後の行が問題を引き起こしています
(criteria.Locations == null ||
criteria.Locations.Count == 0 ||
a.AccommodationPlaceJoins.Any(j => criteria.Locations.Contains(j.Place.PlaceName)))
それが与えるエラーは
タイプ 'System.Collections.Generic.IList`1' の定数値を作成できません。このコンテキストでは、プリミティブ型 (Int32、String、および Guid など) のみがサポートされます。
私はリストを作成しようとさえしていません。私がここでやろうとしているのは、場所に関連付けられている宿泊施設を取り戻すことです (宿泊施設テーブルを介して宿泊施設テーブルにリンクされている場所テーブルの場所名が、条件の場所名のいずれかと等しい場合)。 .Locations (IList 型)。
この行をこれに変更しようとしましたが、うまくいきませんでした。
(criteria.Locations == null ||
criteria.Locations.Count == 0 ||
a.AccommodationPlaceJoins.Any(j => criteria.Locations.Any(l => l == j.Place.PlaceName)))