2016-08-08 25 views
1

Der unten stehende Code wird verwendet, um eine Dropdown-Liste mit Diensten zu erstellen, die meine Firma anbietet. Die Dienste werden aus unserer Datenbank gezogen und ich habe fest codiert und ein zusätzliches Element namens "SSN Trace" zu der Liste hinzugefügt. Das Problem besteht darin, dass das Element immer noch am Ende der Liste angezeigt wird, anstatt in alphabetischer Reihenfolge mit dem Rest der Listenelemente zu fallen. Kann jemand helfen?Artikel zu einer Liste hinzugefügt, aber nicht alphabetisch sortiert

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; 
     } 

RICHTIG Code:

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

gefunden werden kann dies werden versuchen? 'transanctionsReportProducts = transanctionsReportProducts.OrderBy (el => el.Text);' – techspider

Antwort

4

Sie sind nicht auf die Rückkehr von OrderBy etwas zu tun. Sie können das Ergebnis der OrderBy sofort zurückgeben. Wenn Sie OrderBy aufrufen, mutiert es nicht die vorhandene Liste, die Sie übergaben. Es erstellt eine neue Liste der geordneten Elemente, und Sie tun nichts darauf.

Weitere Informationen hierzu finden 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

Willst du sagen, ändere meine Rückgabebestätigung, um dein Code-Snippet zu reflektieren? –

+0

Entfernen Sie Ihre vorhandene Rückgabe und fügen Sie zurück, wenn Sie OrderBy –

+0

Ich werde es jetzt versuchen. Vielen Dank!! –