在下面的代码中,我需要将“Variable1”设置为任意值,因此我不会在下面进一步讨论范围问题。对于var类型的变量,最好的任意值是什么,或者是否有更好的方法来避免我遇到的范围问题?
var Variable1;
if(Something == 0)
{
//DB = DatabaseObject
Variable1 =
from a in DB.Table
select new {Data = a};
}
int RowTotal = Variable1.Count();
答案 0 :(得分:3)
嗯,你可以这样做:
// It's not clear from your example what the type of Data should
// be; adjust accordingly.
var variable1 = Enumerable.Repeat(new { Data = 0 }, 0).AsQueryable();
if (something == 0)
{
//DB = DatabaseObject
variable1 = from a in DB.Table
select new {Data = a};
}
int rowTotal = variable1.Count();
这实际上是“通过示例打字”。说实话,我会尽量避免它 - 但是如果没有看到剩下的方法,很难确切地知道我是怎么做的。如果可能的话,我会尽量保持匿名类型范围尽可能紧。
注意:在这种情况下,您只需选择a
而不是匿名类型。我假设你的真实用例更复杂。同样,如果真正只需要行总数,那么在大括号内设置 。上述解决方案仅适用于您以后真正需要变量值的情况。
答案 1 :(得分:1)
您是稍后在代码中使用Variable1,还是仅查找行数。
如果是后者,那就是:
int RowTotal = DB.Table.Count();
如果是整个区块:
int RowTotal = (Something == 0) ? DB.Table.Count() : 0;
答案 2 :(得分:0)
看起来您可以将其定义为IEnumerable。然后你可以像你想要的那样使用计数功能。