結合された (インクルードされた) テーブルがアイテムのコレクションと一致する結果のリストを返すステートメントを書くのに問題があります。
EF 5.0 エンティティ モデルを使用しています。私は、彼らが選択VendorProfile
した PK/FK テーブルを含む単純なテーブルを持っています。VendorCategories
ProfileID
VendorProfiles にコレクション (フォーム投稿から渡された) に一致する VendorCategories がある結果のみを取得する方法がわかりません。複数の検索基準を処理できる動的検索機能を構築しようとしていましたが、すべて機能しますが、criteria.categories
.
public class CustomSearchCriteria
{
public string name { get; set; }
public string company { get; set; }
public DateTime? startDate { get; set; }
public DateTime? endDate { get; set; }
public int[] categories { get; set; }
}
public IEnumerable<VendorProfile> Search(CustomSearchCriteria criteria)
{
IQueryable<VendorProfile> query = _db.VendorProfiles
.Include("VendorCategories")
.OrderBy(v => v.ProfileID);
if (criteria.categories != null)
query = query.Where(v => v.VendorCategories.Contains(criteria.categories));
if (criteria.name != string.Empty)
query = query.Where(v => v.Name.Contains(criteria.name));
if (criteria.company != string.Empty)
query = query.Where(v => v.CompanyName.Contains(criteria.company));
if (criteria.startDate != null && criteria.endDate != null)
query = query.Where(v => v.DateCreated > criteria.startDate && v.DateCreated < criteria.endDate);
return query.ToList();
}