我想實現是一樣的東西:如何重用「變種」,在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;
}
但它不能正確編譯。如果我在第二個query
之前添加var
,它會提示該查詢已被聲明。 我是否必須更改變量名稱?諸如此類: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中的類型T.此外,我select
是使用new { PropertyName = propertyValue }
的匿名對象。 無論如何,如果我堅持使用相同的名稱query
?
您必須定義類型,然後在交換機之前聲明它。 –
你想在switch後面使用'query'嗎? – tia
@tia不,我不知道。我知道這似乎有點不合理,但我只是想使用相同的名稱'query',因爲它們都是查詢表。 – ChandlerQ