我想要实现的是:
switch(flag)
{
case 1:
var query=from w in db.someTable
select w;
break;
case 2:
query=from w in db.someTable
where w.id==someID
select w;
break;
case default:
break;
}
但它无法正确编译。如果我var
在第二个之前添加一个query
,它会提示查询已被声明。我必须更改变量名吗?比如:query1 in case1, query2 in case2
等。
已编辑 1 感谢您的帮助。事实上,我的代码比我上面发布的要复杂一些。这是完整的代码:
List<object> results=new List<object>();
switch (flag)
{
case 1:
var query = from w in db.RADIATION
where w.DATEDT.CompareTo(dateStr) == 0
&& w.LATITUDE.CompareTo(latitude) == 0
&& w.LONGITUDE.CompareTo(longitude) == 0
orderby w.TIMETM
select new { w.RADIATION, w.TIMETM };
break;
case 2:
var query = from w in db.TEMPRETURE
where w.DATEDT.CompareTo(dateStr) == 0
&& w.LATITUDE.CompareTo(latitude) == 0
&& w.LONGITUDE.CompareTo(longitude) == 0
orderby w.TIMETM
select new { w.TEMPRETURE, w.TIMETM };
foreach (var item in query)
{
var resultItem = new { TEMPRETURE = item.TEMPRETURE, TIME = item.TIMETM };
results.Add(resultItem);
}
break;
case default:
break;
}
这两个查询针对两个不同的表。所以我不知道如何确定 IQueryable 中的 Type T。另外,我select
是一个匿名对象,使用new { PropertyName = propertyValue }
. 无论如何,如果我坚持使用相同的名字query
?