2016-08-08 4 views
1

Данный код используется для создания раскрывающегося списка услуг, предлагаемых моей компанией. Услуги извлекаются из нашей базы данных, я жестко закодирован и добавлен дополнительный элемент с именем «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; 
     } 
+1

можно попробовать это? 'transanctionsReportProducts = transanctionsReportProducts.OrderBy (el => el.Text);' – techspider

ответ

4

Вы ничего не делаете на возвращение OrderBy. Вы можете сразу вернуть результат OrderBy. Когда вы вызываете OrderBy, он не мутирует существующий список, который вы передали. Он создает новый список упорядоченных элементов, и вы ничего не делаете на нем.

Более подробную информацию можно найти here

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); 
} 
+0

Вы хотите изменить мой оператор возврата, чтобы отразить фрагмент кода? –

+0

Удалите существующий доход и добавьте возврат, когда вы выполните OrderBy –

+0

Я попробую прямо сейчас. Благодаря!! –

 Смежные вопросы

  • Нет связанных вопросов^_^