私が実装したいのは次のようなものです:
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
2 番目の の前にa を追加するquery
と、クエリが宣言されていることを確認するプロンプトが表示されます。変数名を変更する必要がありますか? のようなもの:query1 in case1, query2 in case2
など。
EDITED 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;
}
2 つのクエリは、2 つの異なるテーブルに対するものです。したがって、IQueryable で Type T を判別する方法がわかりません。また、私select
は を使用した匿名オブジェクトnew { PropertyName = propertyValue }
です。私が同じ名前を使用することを主張した場合、とにかくありますquery
か?