0

私は関係、プロジェクトのカテゴリを持っています。この関係は多対多であるため、Project / project_has_category / categories の 3 つのテーブルがあります。

特定のカテゴリと関係があるすべてのプロジェクトを (その ID で) 選択する必要があります

プロジェクトクラス

public class Project
{
    public int ProjectID { get; set; }

    public virtual ICollection<Category> Categories { get; set; }
}

カテゴリ クラス

public class Category
{
    public int CategoryID { get; set; }
    public string CategoryName { get; set; }

    public virtual ICollection<Project> Projects { get; set; }
}

私は次のことを試しました:

[HttpPost]
public ActionResult Projects(string catID, string strSearch)
{
    var cats = Adapter.CategoryRepository.Get();
    var projects = Adapter.ProjectRepository.Get().Where(x => x.Categories.Contains(catID));
    /*also*/
    var projects = Adapter.ProjectRepository.Get().Where(x => cats.Contains(catID));
    return View(projects);
}

しかし、これはエラーを与えます:

'System.Collections.Generic.ICollection.Contains(LibModels.Category)' に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります C:\Users\thomas\Desktop\Freelauncher1005\Freelauncher\Controllers\ProjectController.cs

私は何を間違っていますか?

4

3 に答える 3

1

最初に ID を int にキャストし、次に Any を使用する必要があります

var id = int.Parse(catID);
Adapter.ProjectRepository.Get().Where(x => x.Categories.Any(y => y.CategoryID == id))
于 2013-08-26T13:40:04.767 に答える