C# 使用LINQ从三种自行车(山地自行车、旅游自行车和公路自行车)中选择一种

C# 使用LINQ从三种自行车(山地自行车、旅游自行车和公路自行车)中选择一种,c#,linq,asp.net-mvc-4,C#,Linq,Asp.net Mvc 4,当我使用MVC4构建一个web应用程序时,它有三种自行车(“山地自行车”、“旅游自行车”和“公路自行车”) 当你点击“山地车”时,我想得到所有型号的“山地车”等等。我应该怎么做来修复我的代码 var listId = db.ProductSubcategories .Where(pc => pc.ProductSubcategoryID == 1 || pc.ProductSubcategoryID == 2 || pc.ProductSubcategoryI

当我使用MVC4构建一个web应用程序时,它有三种自行车(“山地自行车”、“旅游自行车”和“公路自行车”)

当你点击“山地车”时,我想得到所有型号的“山地车”等等。我应该怎么做来修复我的代码

var listId = db.ProductSubcategories
               .Where(pc => pc.ProductSubcategoryID == 1 || pc.ProductSubcategoryID == 2 || pc.ProductSubcategoryID == 3)
               .Select(pc => pc.ProductSubcategoryID);

如果我正确理解你的问题,你需要知道你所指的自行车的子类别ID是什么

string selectedBike = "Mountain Bike";
var selectedBikeSubCategory = db.ProductSubcategories.FirstOrDefault(p => p.Name == selectedBike); // Assuming you have a name for sub categories
if (selectedBikeSubCategory != null)
{
    var allMountainBikes = db.Products.Where(p => p.ProductSubcategoryID == selectedBikeSubCategoryId.ID); // will give you all products matching the selected sub category bike type
}

Contains方法被认为更具可读性

您能提供您的模型吗?也许是产品和产品子类别?你能解释一下你提供的LINQ示例如何不能满足你的需要吗?@TheGreatCO:我提供的LINQ列出了三种自行车的所有型号,而不是其中一种。@Selman22产品表:名称:Mountain-500 Black,52 ProductSubcategories table:NameofBike:Mountain Bikes相互匹配,ProductSubcategoriId=2哪个
ProductSubcategoriId
与哪种类型的自行车相关?它将对数据库进行两次单独的查询。@MarcinJuraszek是的,在这个阶段,问题中没有说明只需要一次查询。如果应用程序设计正确,则子类别ID已被评估,只需要第二个查询:)请详细说明您的答案,并添加有关您提供的解决方案的更多描述?
var criteria = new string[] {"1","2","3"};
var listId = from x in db.ProductSubcategories where criteria.Contains(x.ProductSubcategoryID);