在a中声明一些变量switch并在外部使用它.
我不知道语法.
为了解决我的问题,我想做这样的事情,但是不行,因为它只是一种哲学:
public ActionResult Compare(int id, string orderBy)
{
var productsList = Products.BuildIndividualProductComparisonList(id);
var product = Products.BuildToCompare(id);
switch (orderBy)
{
case "lowestToBiggest":
var organizedProductsList =
productsList.OrderBy(x => x.minProductPrice);
break;
case "biggestToLowest":
var organizedProductsList =
productsList.OrderBy(x => x.maxProductPrice);
break;
default:
var organizedProductsList =
productsList.OrderBy(x => x.minProductPrice);
break;
}
ComparisonViewModel comparisonViewModel =
new ComparisonViewModel
{
Product = product,
ProductList = organizedProductsList
};
return View(comparisonViewModel);
}
Run Code Online (Sandbox Code Playgroud)
这是我最初的C#代码,效果很好:
public ActionResult Compare(int id, string orderBy)
{
var productsList = Products.BuildIndividualProductComparisonList(id);
var product = Products.BuildToCompare(id);
ComparisonViewModel comparisonViewModel =
new ComparisonViewModel
{
Product = product,
ProductList = productsList
};
return View(comparisonViewModel);
}
Run Code Online (Sandbox Code Playgroud)
有人有任何想法解决我的问题吗?
在交换机中声明一些变量并在外部使用它.
你不能.范围内定义的变量只能在该范围内可见.
您必须在switch语句之外声明您的变量,然后您才能在外部使用它.
我看到你正在使用var(隐式类型变量)并且你不能在switch语句之外声明它(因为需要分配),你应该看到:在条件范围内声明隐式类型变量并在外部使用它并且Eric Lippert回答
在switch块外声明变量并为其赋值.另外,尽量不要List为集合名称使用后缀:
IEnumerable<Product> sortedProducts;
switch (orderBy)
{
case "lowestToBiggest":
sortedProducts = products.OrderBy(x => x.minProductPrice);
break;
case "biggestToLowest":
sortedProducts = products.OrderBy(x => x.maxProductPrice);
break;
default:
sortedProducts = products.OrderBy(x => x.minProductPrice);
break;
}
Run Code Online (Sandbox Code Playgroud)
实际上你的代码可以简化为:
IEnumerable<Product> sortedProducts =
products.OrderBy(p => orderBy == "biggestToLowest" ?
p.maxProductPrice :
p.minProductPrice);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1854 次 |
| 最近记录: |