2017-01-11 2 views
0

Я пытаюсь написать запрос LINQ, чтобы получить идентификатор категории, которая будет использоваться в запросе на перенаправление. Единственная информация, которую я буду иметь, - это идентификатор продукта. Все продукты принадлежат 1 категории.Как извлечь идентификатор категории из продукта с помощью идентификатора продукта

Когда я нажимаю категорию из «Категория/Индекс/Я беру в« Продукт/Индекс/[Идентификатор категории] »со всеми продуктами, относящимися к этому идентификатору категории. Когда я удаляю один из продуктов, действие удаления Контроллер продуктов должен перенаправить меня на ту же страницу «Продукт/Индекс/[Идентификатор категории]». На данный момент я перенаправлен на «Продукт/Индекс», который является неверным запросом. Мне нужно перейти на страницу индекса с категорией . идентификатор в запросе

public class Category 
    { 
     public int Id { get; set; } 
     [Required] 
     public string Name { get; set; } 
     [Required] 
     public Byte[] Image { get; set; } 
     public virtual ICollection<Product> Products { get; set; } 
    } 

public class Product 
{ 
    public int Id { get; set; } 
    [Required] 
    public string Name { get; set; } 
    [Required] 
    public Byte[] Image { get; set; } 
    [Required] 
    public Decimal Price { get; set; } 
} 

до сих пор у меня есть:

var catID = db.Categories.SelectMany(p => p.Products.Select(x => x.Id == id));

+1

Что перенаправляет запрос на перенаправление? Вы пытались написать LINQ самостоятельно? С чем именно вы боретесь? – Andrei

+1

Какие идентификаторы вы хотите? Каким будет ваш желаемый результат? – RandomStranger

+0

взгляните на мой обновленный ответ – naz786

ответ

2

Предполагая, что id содержит ваш идентификатор продукта:

var catId = db.Categories.Single(category => category.Products.Any(product => product.Id == id)).Id

Это отбросит, если исключение данный id не существует ни в одной категории. Если вы этого не хотите, вы можете использовать:

var category = db.Categories.SingleOrDefault(category => category.Products.Any(product => product.Id == id)); 
if (category == null) 
{ 
    // handle error 
} 
else 
{ 
    var catId = category.Id; 
    // do your work with catId 
} 
0

Предполагая, что продукт существует и что он принадлежит к какой-либо категории, должно работать:

db.Categories.Single(c => c.Products.Any(p => p.Id == id)).Id 
+1

Я не вижу свойство 'Category' внутри объекта' Product' –

+1

Извините, вопрос был упорядочен. Соответственно отредактируйте свой ответ. – SirBirne

+0

Взгляните на мой отредактированный вопрос – naz786