#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 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; }
}
Я пытаюсь написать метод в своем веб-api, в котором я хочу фильтровать данные, используя три таких параметра
, используя элемент в качестве контекста
public IEnumerable<filteredItems> GetfilterItem(int category_id, int subcategory_id, int manu_id)
{
return DbSet.Where(c=>c.category_id=category_id amp;amp; c.subcategory_id amp;amp; subcategory_id amp;amp; c.manu_id =manu_d).Select(d=> new filteredItems() {
----
}:
Проблема, с которой я сталкиваюсь, в .Where(c=>c.category_id=category_id amp;amp; c.subcategory_id amp;amp; subcategory_id amp;amp; c.manu_id =manu_d)
том, что Intellisense не проходит category_id
, он не может перейти к subcategory_id
и manu_id
Пожалуйста, дайте мне знать, как правильно написать этот запрос, чтобы я мог фильтровать данные на основе трех переменных.
Ответ №1:
2 вещи:
==
показать эквивалентность.=
для назначения.- Так
c.category_id=category_id
должно бытьc.category_id==category_id
- Так
c.subcategory_id amp;amp; subcategory_id
похоже на опечатку.- Вероятно, следует использовать
==
вместоamp;amp;
- Вероятно, следует использовать
Таким образом, ваш код будет:
public IEnumerable<filteredItems> GetfilterItem(int category_id,
int subcategory_id,
int manu_id)
{
return DbSet.Where(c=>c.category_id == category_id
amp;amp; c.subcategory_id == subcategory_id
amp;amp; c.manu_id == manu_d)
.Select(d=> new filteredItems {
----
});
}
Ответ №2:
Во-первых, вы используете =
вместо ==
, поэтому вы не проводите сравнение.
Во-вторых, у вас есть amp;amp;
между c.subcategory_id
и subcategory_id
, вместо ==
.
Попробуйте это:
public IEnumerable<filteredItems> GetfilterItem(int category_id, int subcategory_id, int manu_id)
{
return DbSet.Where(c => c.category_id == category_id
amp;amp; c.subcategory_id == subcategory_id
amp;amp; c.manu_id == manu_d)
.Select(d => new filteredItems
{
// populate object
};
}