我正在尝试编写LINQ查询以获取要在重定向请求中使用的类别的ID。我将获得的唯一信息是产品ID。所有产品均属于1类。
当我点击"类别/索引/中的类别时,我将被带到"产品/索引/ [类别ID]"包含特定于该类别ID的所有产品。当我删除其中一个产品时,产品控制器的删除操作应该将我重定向到同一页面"产品/索引/ [类别ID]"。目前我被引导到"产品/索引"这是无效的请求。我需要转到请求中带有类别ID的索引页面。
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));
答案 0 :(得分:2)
假设id
包含您的产品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
}
答案 1 :(得分:0)
假设产品存在且属于任何类别,则以下内容应该有效:
db.Categories.Single(c => c.Products.Any(p => p.Id == id)).Id