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 回答