将项目添加到列表中,但不会按字母顺序排序
本文关键字:排序 顺序 添加 项目 列表 | 更新日期: 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);
}