2016-06-17 8 views
0

Ich versuche Distinct Ergebnisse mit EntityFramework und MS SQL Abfrage und Filtern von Datensätzen unter zwei Bedingungen zu bekommen, damit ich Distinct()SQL Distinct Aufzeichnungen über mehrere bedingte Abfrage

hier verwendet haben, ist mein Code:

public List<ProductViewModel> GetPagedFilterProducts(int page, int type_id1, int type_id2) 
{ 
    int recordsPerPage = 20; 
    var skipRecords = page * recordsPerPage; 
    var results = _products.GetAll().Where(p => p.type1 == type_id1 && p.type2 == type_id2).Select(p => new ProductViewModel 
    { 
     productId = p.product_id, 
     productTitle = p.product_title, 
    }).OrderByDescending(p => p.productTitle).Skip(skipRecords).Take(recordsPerPage).ToList(); 
    return results.Distinct().ToList(); 
} 

I verwende Kontrollkästchen, um die Datensätze zu filtern, also type_id kann mehr als zwei Bedingungen sein (ich meine, es könnte type_id3 sein). Wie sollte ich abfragen, damit der Benutzer mehr als zwei Bedingungen auswählen kann und es mir immer noch Distinct Ergebnisse gibt.

Wie kann ich jede Bedingung einzeln abfragen und sie zusammen kombinieren und die Distinct Ergebnisse erhalten?

Bitte vergib mir, wenn ich meine Frage nicht richtig erklärt habe.

+2

Ist das überhaupt gültig? Wie kann Ihr Typ id1 _and_ id2 entsprechen? 'p => p.type == type_id1 && p.type == type_id2' –

+0

@GrantWinney: Sorry, diese Abfrage war nur zum Beispiel, ich habe sie bearbeitet. Bitte überprüfe es jetzt. Danke –

+0

Abfrage jeder Bedingung separat: 'p => p.type1 == type_id1 || p.typ2 == type_id2' – Kason

Antwort

0
public List<ProductViewModel> GetPagedFilterProducts(int page, int type_id1, int type_id2) 
{ 
    int recordsPerPage = 20; 
    var skipRecords = page * recordsPerPage; 
    var results = _products.GetAll().Where(p => p.type == type_id1 || p.type == type_id2).Select(p => new ProductViewModel 
    { 
    productId = p.product_id, 
    productTitle = p.product_title, 
    }).OrderByDescending(p => p.productTitle) 
    .Skip(skipRecords) 
    .Take(recordsPerPage).ToList(); 

    return results.Distinct().ToList(); 

}

Die Grundidee hinter der Abfrage Wert der Checkbox für das Auswählen von Elementen mit einer einzigen Spalte in einer Tabelle vergleichen.

Verwandte Themen