2017-06-07 3 views
0

dies ist meine RohdatenWarum verwenden Sie distinct-Funktion war in SQL-Abfrage-Ergebnis und Linq Ergebnis anders?

enter image description here

LINQ Code

public PartialViewResult Menu() 
     { 
      IEnumerable<string> categories = repository.Products 
         .Select(x => x.Category) 
         .Distinct();  
      return PartialView(categories.Distinct()); 
     } 

LINQ Ergebnis

enter image description here

Warum bestimmte Funktion nutzen, müssen LINQ das andere Ergebnis

+1

That SQL Query sollte nur die Kategorie basierend auf Ihrer Eingabe zurückgeben. Ich glaube nicht, dass die Ergebnisse Ihrer Anfrage entsprechen. – Reisclef

+0

Warum wählen Sie distinct [Category] in Ihrem SQL, das so viele andere Spalten zurückgibt, haben Sie die tatsächliche Abfrage, die Sie ausführen, nicht gestellt. –

+3

Und ein 'Soccer' hat einen Platz dahinter' Soccer' – Stefan

Antwort

2

Am Ende der Kategorie befinden sich manchmal Leerzeichen. Sie sollten sie nicht speichern. Man kann es in der SELECT-Abfrage mit Trim fix:

IEnumerable<string> categories = repository.Products 
        .Select(x => x.Category.Trim()) 
        .Distinct();  

Aber anstatt der Kategorie als Zeichenfolge in Ihrer Produkttabelle zu speichern redundant sollten Sie einen Fremdschlüssel haben hier zu einem anderen Tisch Category >>Database normalization

+0

JA, thie ist Raum ... thx eine Menge – square

Verwandte Themen