2016-08-27 3 views
-3

bekam ich eine Enum wie folgt aus:C# einfache Linq mit Enum

public enum PlatForms 
{ 
    AAA=1, 
    BBB=2, 
    CCC=3 
} 

und eine Funktion wie folgt aus:

public List<Something> GetSomething(PlatForms pf) 
{ 
    switch(pf) 
    { 
     case PlatForms.AAA: 
      var some = context.table1.Where(x => x.Prop == true); 
      break; 
     case PlatForms.BBB: 
      var some2 = context.table2.Where(x => x.Prop == true); 
      break; 
     default: 
      break; 

    } 
    //do convert; 
    // 
} 

Der Unterschied ist Tabellenname nicht gleich ist. Wie schreibe ich den Code um, um es einfacher zu machen?

+3

Verwenden Sie 'DbContext.Set ()' und übergeben Sie den generischen Typ an Ihre Methode. –

+0

Was ist 'Etwas', d. H. Wie bekommst du' some' oder 'some2', die zum selben Typ' Something' werden – DWright

Antwort

1

Würde so etwas funktionieren?

Sie würden nicht das Wörterbuch Code wollen jedes Mal laufen, also sobald Sie Ihren Kontext haben Sie ein Wörterbuch initialisieren könnte ...

 var tableTranslation = new Dictionary<Platforms, Context>(); 
     tableTranslation.Add(Platforms.AAA, context.table1); 
     tableTranslation.Add(Platforms.BBB, context.table2); 

Dann in Ihrem GetSomething() -Methode Sie könnten referenziere einfach die Tabelle des Wörterbuchs.

 var some = tableTranslation[pf].Where(x => x.Prop == true); 
     //do convert 

Würde das tun, was Sie suchen?