То, что я хочу, чтобы реализовать что-то вроде:Как повторно использовать переменную, объявленную «вар» в C#
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;
}
Два запроса предназначены для двух разных таблиц. Поэтому я не знаю, как определить тип T в IQueryable. Кроме того, что я select
является анонимным объектом, используя new { PropertyName = propertyValue }
. В любом случае, если я настаиваю на том, чтобы использовать то же имя query
?
Вы должны определить тип, затем объявить его перед коммутатором. –
Вы хотите использовать 'query' позже после' switch'? – tia
@tia Нет, не знаю. Я знаю, что это кажется немного необоснованным, но я просто хочу использовать одно и то же имя 'query', потому что это все запросы для таблиц. – ChandlerQ