C# 我的switch语句有什么问题?
我刚刚通过一个switch语句向这行代码添加了一个排序功能,但是switch语句似乎什么都没做。。。我错过了什么吗?我是一个新手,所以我可能是错的,我的错误可能存在于代码的其他地方,所以请容忍我。此外,对于如何使这一行代码更高效的一些建议也将受到欢迎。多谢各位C# 我的switch语句有什么问题?,c#,C#,我刚刚通过一个switch语句向这行代码添加了一个排序功能,但是switch语句似乎什么都没做。。。我错过了什么吗?我是一个新手,所以我可能是错的,我的错误可能存在于代码的其他地方,所以请容忍我。此外,对于如何使这一行代码更高效的一些建议也将受到欢迎。多谢各位 public ProductGetAllActiveResponse GetAllActiveProducts(ProductGetActiveRequest request) { IEnumera
public ProductGetAllActiveResponse GetAllActiveProducts(ProductGetActiveRequest request)
{
IEnumerable<SalesOrderHeader> salesOrderMatches = DataModel.SalesOrderHeaders
.Where(s => s.CustomerID == request.CustomerId &&
s.OrderDate > request.Startdate &&
s.OrderDate < request.EndDate);
ProductGetAllActiveResponse response = new ProductGetAllActiveResponse();
List<ProductActiveResponse> products = new List<ProductActiveResponse>();
foreach (var item in salesOrderMatches)
{
foreach (var item2 in item.SalesOrderDetails)
{
var product = DataModel.Products.FirstOrDefault(n => n.ProductID == item2.ProductID);
ProductActiveResponse newResponse = new ProductActiveResponse();
newResponse.Color = product.Color;
newResponse.DiscontinuedDate = product.DiscontinuedDate;
newResponse.ListPrice = product.ListPrice;
newResponse.Name = product.Name;
newResponse.OrderDate = item.OrderDate;
newResponse.ProductId = product.ProductID;
newResponse.ProductLine = product.ProductLine;
newResponse.ProductModelId = product.ProductModelID;
newResponse.ProductNumber = product.ProductNumber;
newResponse.Style = product.Style;
products.Add(newResponse);
}
}
response.IndexSize = products.Count();
IEnumerable<ProductActiveResponse> test;
switch(request.SortMember)
{
case "ProductId":
if (request.SortDirection == 1)
test = products.OrderBy(m => m.ProductId);
else
test = products.OrderByDescending(m => m.ProductId);
break;
case "ListPrice":
if (request.SortDirection == 1)
test = products.OrderBy(m => m.ListPrice);
else
test = products.OrderByDescending(m => m.ListPrice);
break;
case "Color":
if (request.SortDirection == 1)
test = products.OrderBy(m => m.Color);
else
test = products.OrderByDescending(m => m.Color);
break;
case "OrderDate":
if (request.SortDirection == 1)
test = products.OrderBy(m => m.OrderDate);
else
test = products.OrderByDescending(m => m.OrderDate);
break;
default:
test = products.OrderBy(m => m.OrderDate);
break;
}
var trimmedProducts = test.Skip((request.Page - 1) * request.ProductsPerPage).Take(request.ProductsPerPage);
foreach (var item in trimmedProducts)
{
response.ActiveProducts.Add(item);
}
if (response.ActiveProducts.Count() == 0)
response.Success = false;
else
response.Success = true;
return response;
}
公共产品GetAllActiveResponse GetAllActiveProducts(ProductGetActiveRequest请求)
{
IEnumerable salesOrderMatches=DataModel.SalesOrderHeaders
。其中(s=>s.CustomerID==request.CustomerID&&
s、 OrderDate>request.Startdate&&
s、 OrderDateOrderBy和OrderByDescending不修改现有集合。它们返回一个新的已排序IEnumerable,该IEnumerable被丢弃,因为它没有分配给任何对象 你可以这样做:
IEnumerable<ProductActiveResponse> sortedProducts;
...
sortedProducts = product.OrderBy(m => m.OrderDate);
...
var trimmedProducts = sortedProducts.Skip((request.Page - 1) * request.ProductsPerPage).Take(request.ProductsPerPage);
IEnumerable sortedProducts;
...
sortedProducts=product.OrderBy(m=>m.OrderDate);
...
var trimmedProducts=sortedProducts.Skip((request.Page-1)*request.productspage.Take(request.productspage);
OrderBy和OrderByDescending不修改现有集合。它们返回一个新的已排序IEnumerable,该IEnumerable被丢弃,因为它没有分配给任何对象
你可以这样做:
IEnumerable<ProductActiveResponse> sortedProducts;
...
sortedProducts = product.OrderBy(m => m.OrderDate);
...
var trimmedProducts = sortedProducts.Skip((request.Page - 1) * request.ProductsPerPage).Take(request.ProductsPerPage);
IEnumerable sortedProducts;
...
sortedProducts=product.OrderBy(m=>m.OrderDate);
...
var trimmedProducts=sortedProducts.Skip((request.Page-1)*request.productspage.Take(request.productspage);
问题不在于switch
语句,而是您使用了OrderBy
而没有将结果赋给变量
OrderBy
和OrderByDescending
返回一个IEnumerable
集合
改变
products.OrderBy(m => m.OrderDate);
到
问题不在于
switch
语句,而在于您使用了OrderBy
而没有将结果赋给变量
OrderBy
和OrderByDescending
返回一个IEnumerable
集合
改变
products.OrderBy(m => m.OrderDate);
到
而且它会起作用。
products=products.OrderBy(m=>m.OrderDate)代码>products=products.OrderBy(m=>m.OrderDate)代码>