【发布时间】:2012-02-03 19:24:54
【问题描述】:
在下面的简化代码中,
if(city == "New York City")
{
var MyObject = from x in MyEFTable
where x.CostOfLiving == "VERY HIGH"
select x.*;
}
else
{
var MyObject = from x in MyEFTable
where x.CostOfLiving == "MODERATE"
select x.*;
}
foreach (var item in MyObject)
{
Console.WriteLine("<item's details>");
}
在条件块之外无法访问变量 MyObject。如何在 if..else 之外进行迭代?
【问题讨论】:
-
我想你可以在块之外声明变量。
-
我得到“必须初始化隐式类型的局部变量”
-
x.*是指匿名类型的构造,对吗?如果不是,你为什么坚持隐式类型? -
是的,我写 x.* 时的意思是匿名类型。所以在我的实际代码中,选择看起来像
select new {columnA, columnB, columnC}。抱歉过于简单化了。 -
在 this 的情况下,由于条件块仅用于修改 LINQ 查询的
where子句,您可以避免整个问题:消除 @987654325 @ 块并将where子句更改为where x.CostOfLiving == ((city == "New York City") ? "VERY HIGH" : "MODERATE")。在更复杂的情况下,将where子句替换为适当的泛型谓词...
标签: c# foreach var conditional-statements implicit-typing