私はEFを学んでいるので、これが他の場所で回答されている場合は謝罪します。これに対する解決策が見つかりませんでした。条件をサポートしていないため、インクルードを使用できないため、2 つの追跡クエリを使用しています。したがって、私のコードは次のとおりです。
List<int> CategoryIDs = _categoryIDs.Split(',').Select(t => int.Parse(t)).ToList();
私のモデル:
public class Genre
{
public int GenreID { get; set; }
public string Name { get; set; }
public string iconURL{ get; set; }
public string Description { get; set; }
public int DisplaySequence { get; set; }
public IList<Category> Categories { get; set;
}
public class Category
{
public int CategoryId { get; set; }
public int GenreID { get; set; }
public string CategoryName { get; set; }
public virtual Genre Genre { get; set; }
}
public class SubCategory
{
public int SubCategoryID { get; set; }
public int CategoryID { get; set; }
public string SubCategoryName { get; set; }
public virtual Category Category { get; set; }
}
それから私は私のビューモデルを持っています:
public class HomeIndexData
{
public IEnumerable<Genre> Genres { get; set; }
public IEnumerable<Category> Categories { get; set; }
public IEnumerable<SubCategory> SubCategories { get; set; }
}
次に、ビューモデルをインデックスに戻そうとしています:
public ActionResult Index()
{
var genres = db.Genres.ToList().OrderBy(g => g.DisplaySequence);
var categories = db.Categories.Include(i => i.SubCategories)
.Where(i => CategoryIDs.Contains(i.CategoryId));
foreach (var category in categories)
{
};
HomeIndexData viewModel = new HomeIndexData
{
Genres = genres
};
return View(viewModel);
}
結果を返しますが、SubCategories もフィルタリングしたかったのです。.Include(i => i.SubCategories) の代わりに WHERE 条件を配置するにはどうすればよいですか。
匿名型を返したくないことに注意してください。そのため、私は 2 つの追跡されたクエリです。
前もって感謝します。