将项目添加到列表中,但不会按字母顺序排序

本文关键字:排序 顺序 添加 项目 列表 | 更新日期: 2023-09-27 18:01:18

下面的代码用于创建我公司提供的服务的下拉列表。服务正在从我们的数据库中提取,我硬编码并添加了一个名为"SSN Trace"的附加项到列表中。问题是,该项目仍然显示在列表的末尾,而不是按字母顺序与其他列表项目一起下降。有人能帮忙吗?

public List<SelectListItem> createProductsDropdownForTransReport()
        {
            var resultsOfProductsSearch = findAllByEnumSet(EnumLookup.EnumSetType.SterlingWestProducts);
            var transanctionsReportProducts = resultsOfProductsSearch
                .Where(el => el.Ordinal != 95 && el.Ordinal != 253)
                .Select(el => new SelectListItem { Text = el.Text, Value = el.Text })
                .OrderBy(el => el.Text)
                .ToList();
            transanctionsReportProducts.Add(new SelectListItem { Text = "SSN Trace", Value = "SSN Trace" }); 
            var allTransReportProductsOption = new SelectListItem
            {
                Text = "All",
                Value = String.Join(" | ", transanctionsReportProducts.Select(x => x.Text)) 
        };
            transanctionsReportProducts.Insert(0, allTransReportProductsOption);
            transanctionsReportProducts.OrderBy(el => el.Text);
            return transanctionsReportProducts;
        }

正确代码:

public IEnumerable<SelectListItem> createProductsDropdownForTransReport()
        {
            var resultsOfProductsSearch = findAllByEnumSet(EnumLookup.EnumSetType.SterlingWestProducts);
            var transanctionsReportProducts = resultsOfProductsSearch
                .Where(el => el.Ordinal != 95 && el.Ordinal != 253)
                .Select(el => new SelectListItem { Text = el.Text, Value = el.Text }).ToList();

            transanctionsReportProducts.Add(new SelectListItem { Text = "SSN Trace", Value = "SSN Trace" });
            transanctionsReportProducts = transanctionsReportProducts.OrderBy(el => el.Text).ToList();
            var allTransReportProductsOption = new SelectListItem
            {
                Text = "All",
                Value = String.Join(" | ", transanctionsReportProducts.Select(x => x.Text)) 
        };
            transanctionsReportProducts.Insert(0, allTransReportProductsOption);
            return transanctionsReportProducts;
        }

将项目添加到列表中,但不会按字母顺序排序

您在OrderBy返回时没有做任何事情。您可以立即返回OrderBy的结果。当你调用OrderBy时,它不会改变你传入的现有列表。它创建了一个有序元素的新列表,而您没有对它做任何操作。

更多信息可以在这里找到

public IEnumerable<SelectListItem> createProductsDropdownForTransReport()
{
    var resultsOfProductsSearch = findAllByEnumSet(
        EnumLookup.EnumSetType.SterlingWestProducts);
    var transanctionsReportProducts = resultsOfProductsSearch
        .Where(el => el.Ordinal != 95 && el.Ordinal != 253)
        .Select(el => new SelectListItem { Text = el.Text, Value = el.Text })
        .OrderBy(el => el.Text)
        .ToList();
    transanctionsReportProducts.Add(new SelectListItem { 
        Text = "SSN Trace", Value = "SSN Trace" }); 
    var allTransReportProductsOption = new SelectListItem
    {
        Text = "All",
        Value = String.Join(" | ", transanctionsReportProducts.Select(x => x.Text)) 
    };
    transanctionsReportProducts.Insert(0, allTransReportProductsOption);
    return transanctionsReportProducts.OrderBy(el => el.Text);
}