C# 使用其他两个实体筛选实体中的数据

C# 使用其他两个实体筛选实体中的数据,c#,linq,entity-framework,asp.net-web-api,entity-framework-4,C#,Linq,Entity Framework,Asp.net Web Api,Entity Framework 4,我有以下三个数据表: public partial class category { public category() { this.subcategory = new HashSet<subcategory>(); } public int category_id { get; set; } public string description { get; set; } public virtual ICollec

我有以下三个数据表:

public partial class category
{
    public category()
    {
        this.subcategory = new HashSet<subcategory>();
    }

    public int category_id { get; set; }
    public string description { get; set; }
    public virtual ICollection<subcategory> subcategory { get; set; }
}
第二个实体是

 public partial class subcategory
    {
        public subcategory()
        {
            this.tracked_item = new HashSet<item>();
        }

        public int subcategory_id { get; set; }
        public int category_id { get; set; }
        public string description { get; set; } 
        public virtual ICollection<item> item { get; set; }
        public virtual category category { get; set; }
    }
第三实体

public partial class item
{
    public int item_id { get; set; }
    public string serial_number { get; set; }
    public string inventory_number { get; set; }
    public int subcategory_id { get; set; }
    public Nullable<int> manu_id { get; set; }}
    public virtual subcategory subcategory { get; set; }
    public virtual manu manu { get; set; }
}
我正在尝试在我的web api中编写一个方法,在这里我想使用三个参数来过滤数据,就像这样 使用项目作为上下文

public IEnumerable<filteredItems> GetfilterItem(int category_id, int subcategory_id, int manu_id)
{
  return DbSet.Where(c=>c.category_id=category_id && c.subcategory_id && subcategory_id && c.manu_id =manu_d).Select(d=> new filteredItems() {
 ----
}:
问题是c=>c.category\u id=category\u id&&c.subcategory\u id&&subcategory\u id&&c.manu\u id=manu\u d Intellisense无法通过category\u id它无法进入subcategory\u id和manu\u id

请让我知道如何正确编写此查询,以便我可以根据三个变量筛选数据

2件事:

==表示等效性是用来分配的。 所以c.category\u id=category\u id应该是c.category\u id==category\u id c、 子类别\u id&&subcategory\u id看起来像是打字错误。 可能应该使用==而不是&& 所以你的代码应该是:

public IEnumerable<filteredItems> GetfilterItem(int category_id, 
                                                int subcategory_id, 
                                                int manu_id)
{
  return DbSet.Where(c=>c.category_id == category_id 
                     && c.subcategory_id == subcategory_id 
                     && c.manu_id == manu_d)
              .Select(d=> new filteredItems {
                                              ----
                                            });
}
首先,您使用的是=而不是==,因此您没有进行比较

其次,在c.subcategory\u id和subcategory\u id之间有一个&&而不是==

试试这个:

public IEnumerable<filteredItems> GetfilterItem(int category_id, int subcategory_id, int manu_id)
{
    return DbSet.Where(c => c.category_id == category_id
                            && c.subcategory_id == subcategory_id
                            && c.manu_id == manu_d)
                .Select(d => new filteredItems
                                 {
                                     // populate object
                                 };
}