2016-07-26 17 views
0

Ich mag so etwas wie dies zu tun:C#: Wie impliziten Typvariable zu definieren, innerhalb IF-Block und außerhalb verwendet

var myQuery; 
if (someParam > 0) 
{ 
    myQuery = from x in myTable where x.myValue > someParam select x; 
} 
else { 
    myQuery = from x in myTable select x; 
} 

Das Problem ist, ich kann das nicht tun, weil Sie offenbar nicht eine implizite Variable definieren können, ohne Deklarieren Sie es zuerst, noch können Sie eine implizite Variable erneut deklarieren, nachdem Sie es deklariert haben.

Angenommen, ich kenne den Rückgabetyp der Daten nicht (den ganzen Punkt einer impliziten Variablen), was ist der geeignete Weg dafür?


EDIT:

Die erste Antwort unten funktioniert gut, wenn Sie Ihre Arten sind klar definiert, aber was ist so etwas wie das?

var myQuery; 
if (includeSomething == true) 
{ 
    myQuery = from x in myTable select new { f1 = x.field1, f2 = x.field2 }; 
} 
else { 
    myQuery = from x in myTable select new { f1 = x.field1, f2 = x.field2, x3 = x.field3 }; 
} 
+0

Did stark typisierte Sie haben versucht, die bearbeitete Antwort zu überprüfen. – Rahul

+0

@Rahul, wann wurde die Antwort bearbeitet? –

+0

@LajosArpad, innerhalb der Antwortfensterzeit. – Rahul

Antwort

0

Ja, in einem solchen Fall verkündigen wie

var myQuery; 

zu

IEnumerable<your_type> myQuery; 

Sie können auch tun dies mit einem ternären Operator wie

var myQuery = (someParam > 0) ? from x in myTable where x.myValue > someParam select x : from x in myTable select x;