1

コードに次のブロックがあります。

if (!Userpages.AccessableItems.Where(x => { return x.SelectReturns["Permission_ID"] == 1; }).FirstOrDefault().SelectReturns("AllowDeny"))
{
                Response.Redirect("~/NotAuthorized.aspx");              
} 

whereUserpagesはカスタマイズされたビジネス オブジェクトの変数で、selectReturnsは型のプロパティですDictionary<string,object> が、次のエラーが発生しました。

「演算子 '==' は、タイプ 'object' および 'int' の演算子には適用できません。

「1」をオブジェクトとしてキャストしようとしましたが、それも正しくないようです "。誰か助けてくれませんか?!

4

3 に答える 3

7

あなたの比較はこのように見えます

x.SelectReturns["Permission_ID"] == 1

左側がオブジェクトです。objectだからあなたをキャストIntしてから比較してください。

Convert.ToInt32(x.SelectReturns["Permission_ID"])==o
于 2013-05-27T11:33:39.707 に答える
0

x.SelectReturns["Permission_ID"]型のオブジェクトを返す場合はSystem.Int32、キャストできます。

if(!Userpages.AccessableItems.Where(x => (int)x.SelectReturns["Permission_ID"] == 1).FirstOrDefault().SelectReturns("AllowDeny"))
{
    Response.Redirect("~/NotAuthorized.aspx");              
}

しかし、それが別の型または任意のカスタム型である可能性がある場合は、直接 (オーバーロードされた) Equals メソッドを使用できます。

if(!Userpages.AccessableItems.Where(x => x.SelectReturns["Permission_ID"].Equals(1)).FirstOrDefault().SelectReturns("AllowDeny"))
{
    Response.Redirect("~/NotAuthorized.aspx");              
}
于 2013-05-27T11:46:47.507 に答える