C# 我的switch语句有什么问题?

C# 我的switch语句有什么问题?,c#,C#,我刚刚通过一个switch语句向这行代码添加了一个排序功能,但是switch语句似乎什么都没做。。。我错过了什么吗?我是一个新手,所以我可能是错的,我的错误可能存在于代码的其他地方,所以请容忍我。此外,对于如何使这一行代码更高效的一些建议也将受到欢迎。多谢各位 public ProductGetAllActiveResponse GetAllActiveProducts(ProductGetActiveRequest request) { IEnumera

我刚刚通过一个switch语句向这行代码添加了一个排序功能,但是switch语句似乎什么都没做。。。我错过了什么吗?我是一个新手,所以我可能是错的,我的错误可能存在于代码的其他地方,所以请容忍我。此外,对于如何使这一行代码更高效的一些建议也将受到欢迎。多谢各位

        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、 OrderDaten.ProductID==item2.ProductID); ProductActiveResponse newResponse=新ProductActiveResponse(); newResponse.Color=product.Color; newResponse.contractedDate=product.contractedDate; 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(); 可数检验; 开关(request.SortMember) { 案例“ProductId”: if(request.SortDirection==1) 测试=products.OrderBy(m=>m.ProductId); 其他的 test=products.OrderByDescending(m=>m.ProductId); 打破 案例“ListPrice”: if(request.SortDirection==1) 测试=products.OrderBy(m=>m.ListPrice); 其他的 测试=products.OrderByDescending(m=>m.ListPrice); 打破 案例“颜色”: if(request.SortDirection==1) 测试=产品.OrderBy(m=>m.Color); 其他的 test=products.OrderByDescending(m=>m.Color); 打破 案例“订单日期”: if(request.SortDirection==1) 测试=products.OrderBy(m=>m.OrderDate); 其他的 测试=products.OrderByDescending(m=>m.OrderDate); 打破 违约: 测试=products.OrderBy(m=>m.OrderDate); 打破 } var trimmedProducts=test.Skip((request.Page-1)*request.ProductsPerPage.Take(request.ProductsPerPage); foreach(trimmedProducts中的var项目) { response.ActiveProducts.Add(项目); } if(response.ActiveProducts.Count()==0) 回答:成功=错误; 其他的 回答:成功=正确; 返回响应; }
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);

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)