2017-10-15 4 views
1

2sxcビューを使用してlinqで統計情報を作成しようとしています。しかし、私はC#varを呼び出すことができないようです。ここでは例です:2sxc - c#varsを使用できません

@{ 
    if (@Request.QueryString["ano"] == "" || @Request.QueryString["ano"] == null) { 
     <p>ano not set, using current year (@DateTime.Now.Year)</p> 
     var year = @DateTime.Now.Year; 
     } else { 
     <p>ano set (@Request.QueryString["ano"])</p> 
     var year = @Request.QueryString["ano"]; 
    } 

    var items = AsDynamic(App.Data["entity"]); 
    items = items.Where(p => Convert.ToDateTime(p.data_a).Year == year); 
} 

これは

error CS0103: The name 'year' does not exist in the current context 

になり、私は再び本当に愚かな何かをやっていますか?

+1

あなた 'year'変数が。それを 'if'文の上に置いてください –

+0

私はそれをかなり得ていません...同じではありませんか? var x = 1 if if(1 = 1){var x = 1}?それにもかかわらず、それは動作します。 int year = 0を追加する。一番上にあり、リクエストをintに固定することで解決しました。ありがとうございました(解決したことを示す答えとしてコメントを投稿してください)。 –

答えて

2

あなたはif文の中の変数を宣言すると、今、あなたはこのようにあなたのコードを書き換えることができます外if
それを参照している:内側のスコープで宣言

@{ 
    int year = 0; 
    if (@Request.QueryString["ano"] == "" || @Request.QueryString["ano"] == null) { 
     <p>ano not set, using current year (@DateTime.Now.Year)</p> 
     year = @DateTime.Now.Year; // no "var" keyword here! 
     } else { 
     <p>ano set (@Request.QueryString["ano"])</p> 
     year = int.Parse(Request.QueryString["ano"]); 
    } 

    var items = AsDynamic(App.Data["entity"]); 
    items = items.Where(p => Convert.ToDateTime(p.data_a).Year == year); 
} 
+0

ありがとうございます。ちょっとした修正:年= Int32.Parse(@ Request.QueryString ["ano"]); –

+0

@JoãoGomesうん、あなたは正しい。ところで、 'int.Parse(Request.QueryString [" ano "])'も働いています。私は私の答えを編集する –

関連する問題