我正在尝试执行以下在SQL中完成的操作
SELECT COUNT(*) AS "Total"
FROM dbo.Items
WHERE CategoryID IN (SELECT CategoryID
FROM Categories
WHERE Name = 'Beverages')
有什么想法可以在LINQ
中完成吗?
*更新
Item
类代码:
public class Item
{
[Key]
public int ItemID { get; set; }
public virtual Category Category { get; set; }
public virtual Brand Brand { get; set; }
public int CategoryID { get; set; }
public int BrandID { get; set; }
[Display(Name ="Product Name")]
[Required(ErrorMessage = "Product name is required")]
public string ItemName { get; set; }
[Display(Name="Product Price")]
public decimal? ItemPrice { get; set; }
[DataType(DataType.ImageUrl)]
[Display(Name = "Image URL")]
public string ImageUrl { get; set; }
}
Category
类代码:
public class Category
{
public int CategoryID { get; set; }
[DisplayName("Category Name")]
public virtual string Name { get; set; }
public virtual List<Item> Items { get; set; }
}
答案 0 :(得分:0)
更新 型号
public class Item
{
[Key]
public int ItemID { get; set; }
public Category Category { get; set; }
public int CategoryID { get; set; }
public int BrandID { get; set; }
[Display(Name = "Product Name")]
[Required(ErrorMessage = "Product name is required")]
public string ItemName { get; set; }
[Display(Name = "Product Price")]
public decimal? ItemPrice { get; set; }
[DataType(DataType.ImageUrl)]
[Display(Name = "Image URL")]
public string ImageUrl { get; set; }
}
public class Category
{
[Key]
public int CategoryID { get; set; }
public virtual string Name { get; set; }
public virtual List<Item> Items { get; set; }
}
您想要商品的类别=饮料
您可以从items
结束
var itemsCount1 = dbcontext
.Items
.Count(x => x.Category.Name == "Beverages");
您可以从categories
端开始制作
//如果没有名称为Beverages
的类别,则返回0
var itemsCount2 = dbcontext
.Categories
.FirstOrDefault(x => x.Name == "Beverages")?.Items?.Count() ?? 0;
答案 1 :(得分:0)
您可以通过以下内容获得Count。
var results = Categories.Where(x=>x.Name.Equals("Beverages")
.Join(Items,
c=>c.CategoryID,
i=>i.CategoryID,
(c,i)=> i).Count();
对于模拟数据,
var Categories = new List<Category>
{
new Category{CategoryID =1, Name ="Beverages"},
new Category{CategoryID =2, Name ="One"},
new Category{CategoryID =3, Name ="Two"}
};
var Items = new List<Item>
{
new Item{ItemID=3,CategoryID=4,ItemName="abc1"},
new Item{ItemID=1,CategoryID=1,ItemName="abc2"},
new Item{ItemID=1,CategoryID=1,ItemName="abc3"},
new Item{ItemID=1,CategoryID=1,ItemName="abc4"},
new Item{ItemID=1,CategoryID=1,ItemName="abc5"},
new Item{ItemID=2,CategoryID=1,ItemName="abc6"},
new Item{ItemID=3,CategoryID=4,ItemName="abc7"},
new Item{ItemID=4,CategoryID=2,ItemName="abc8"},
};
输出: 5
更新
var results = dbContext.Categories.Where(x=>x.Name.Equals("Beverages")
.Join(dbContext.Items,
c=>c.CategoryID,
i=>i.CategoryID,
(c,i)=> i).Count();