0

私はこのようなことをしたい:

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

問題は、最初に宣言せずに暗黙の変数を定義することも、宣言した後に暗黙の変数を再宣言することもできないため、これを行うことができないことです。

データの戻り値の型 (暗黙的な型変数のポイント全体) がわからない場合、これを行う適切な方法は何ですか?


編集:

以下の最初の回答は、型が明確に定義されている場合にうまく機能しますが、このようなものはどうでしょうか?

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

1 に答える 1

0

はい、そのような場合は、次のように強く型付けされていることを宣言します

var myQuery;

IEnumerable<your_type> myQuery;

次のような三項演算子を使用してこれを行うこともできます

var myQuery = (someParam > 0) ? from x in myTable where x.myValue > someParam select x : from x in myTable select x;
于 2016-07-26T17:11:27.050 に答える