2

このエラーが発生しました:

Compiler Error Message: CS1001: Identifier expected

このコードセットから:

var reqcategory=""; 
        foreach(Request["category"] as reqcategory)
        {
        var sql5 = "SELECT Type.PreReq1, Type.PreReq2, (CASE WHEN (Type.PreReq1 IS NOT NULL) AND (PermitApp1.RPClass IS NULL) AND (PermitApp1.RPCategory IS NULL) THEN 1 ELSE 0 END) AS missing1, (CASE WHEN (Type.PreReq2 IS NOT NULL) AND (PermitApp2.RPClass IS NULL) AND (PermitApp2.RPCategory IS NULL) THEN 1 ELSE 0 END) AS missing2 FROM Type LEFT JOIN PermitApp AS PermitApp1 ON (Type.PreReq1=PermitApp1.RPClass) OR (Type.PreReq1=PermitApp1.RPCategory) AND ( PermitApp1.CDSID = @0 ) AND (PermitApp1.MDecision='1') LEFT JOIN PermitApp AS PermitApp2 ON (Type.PreReq2=PermitApp2.RPClass) OR (Type.PreReq2=PermitApp2.RPCategory) AND ( PermitApp2.CDSID = @1 ) AND (PermitApp2.MDecision='1') WHERE Type.PType = @2";
        var result = db.QuerySingle(sql5, myCDSID, myCDSID, reqcategory);
        var miss1 = result.missing1;
        var miss2 = result.missing2;
        }

エラーはたまたま次の行に当てはまります。

foreach(Request["category"] as reqcategory)

コンパイラによって強調表示されます。

誰かが私の間違いを教えてもらえますか?そして、どのように識別子を宣言する必要がありますか?

とにかく識別子は何ですか?http://msdn.microsoft.com/en-us/library/b839hwk4(VS.80).aspxの説明が理解できないようです。

そのintの場合は正しく使用しint.parseますが、文字列の場合は...どうすればよいですか?

どうもどうも

ところで、私はwebmatrixを使用しています...

JaredParのソリューションを使用した後...次のエラーが発生しました...

CS1026: ) expected

この部分では:

if (miss1 == '1' or miss2 == '1'){
            ModelState.AddError("missing", "You have not met the Pre-Requisites for "+ cat +" yet.")
            } else if (miss1 == '0' and miss2 == '0'){

        Session["license"] = Request["licence"];
        Session["from"] = Request["from"];
        Session["to"] = Request["to"];
        Session["group"] = Request["group"];
        Session["class1"] = Request["class1"];
        Session["category1"] = Request["category1"];
        Session["class"] = Request["class"];
        Session["category"] = Request["category"];
        Response.Redirect("~/Questionnaire");
        }

この行で:

if (miss1 == '1' or miss2 == '1'){

ありがとう...なぜ私は'('が必要なのかわかりません...そこに...すべてを閉じたので。

4

1 に答える 1

3

問題は、foreachループの構造が逆になっていることです。C#ではidentifire in collection

foreach(var reqcategory in Request["category"]) { 
  ...
} 

C#では有効なコレクションタイプではないRequest[...]returnsとしては、これでも十分ではないことに注意してください。object基になるコレクションのタイプを指定するか、を使用する必要がありますdynamic。最も安全な選択はへのキャストですIEnumerable

foreach(object reqcategory in (IEnumerable)Request["category"]) { 
  ...
}
于 2012-04-23T17:52:22.003 に答える