1

私はこれをやっています:

protected void btn_Click(object sender, EventArgs e){

var myQuery = from tab1 in Table
              where myConditions
              select tab1 ;

その後、ユーザーが選択した選択肢でフィルタリングしています:

myQuery.Where(x => x.someField == someChoice);

うまくいっています。しかし、グローバル escope で「myQuery」を宣言したいと思います。

どうすればいいですか?以下の行をクラスの内側とメソッドの外側に配置しようとしていますが、どのタイプを使用すればよいかわかりません:

private someTypeThatIdontKnow myQuery;

ティア。

4

7 に答える 7

4

これを行う卑劣な方法は、次のようにすることです。

this.myQuery = ...

次に、キャレットをmyQuery(問題を示す赤い波線が表示されます)に置き、 ctrl+を押し.て、フィールドを生成するための IDE のオファーを選択します。

ここに画像の説明を入力

これにより、正しいタイプのフィールドが生成されます。

ここに画像の説明を入力

設定した後、クエリ自体を必要な場所(おそらくコンストラクター)に移動するだけですMyTable

于 2013-11-08T22:31:09.763 に答える
1

キーワードの上にマウスを移動すると、そのvarタイプが表示されます。

それを使用して、結果を保持するクラスのメンバーを定義できます。

于 2013-11-08T22:31:36.050 に答える
1

キーワードを使用しvarて型を取得し、その型の変数を宣言できます。

または、何らかの理由でそのようにしたくない場合は、dynamicタイプを使用できますが、それはお勧めしません。

最良の解決策は、コンパイラにキーワードを使用して型を推測させ、varその型を明示的にクラス メンバー (参照した「グローバル変数」) として使用することです。

于 2013-11-08T22:38:11.780 に答える
0

LINQクエリはある種のIEnumerableを返すので、そうなると思います

private IEnumerable<TypeOfObjectInYourCollection> myQuery;
于 2013-11-08T22:29:24.300 に答える
0

を使用IQueryable<TableEntity>TableEntityます。 は 内のオブジェクトのタイプですTable DbSet

IEnumerable<TableEntity>また、クエリをデータベースに対して実行するか、メモリ内コレクションに対して実行するかによって、 になる場合もあります。

マウスを の上に置くと、使用するタイプを確認することもできますmyQuery

于 2013-11-08T22:29:26.347 に答える
0

タイプはIQueryableof タイプになりtab1ます。

ToList()最終的にクエリを実行するために呼び出すと仮定すると、 List<tab1>. したがって、グローバル変数をその型として宣言できます。

tab1は、リストを取得できるオブジェクトであると想定しています。

List<tab1> result = new List<tab1>();

protected void btn_Click(object sender, EventArgs e)
{
    var myQuery = from tab1 in Table
                  where myConditions
                  select tab1;

    myQuery.Where(x => x.someField == someChoice);

    result = myQuery.ToList();
}
于 2013-11-08T22:32:30.300 に答える
0

試してくださいEnumerableRowCollection

 private EnumerableRowCollection query
于 2013-11-08T22:37:58.840 に答える