2013-05-27 50 views
1

的運營商我在我的以下代碼塊:錯誤:「運算符‘==’不能被施加到型‘對象’和‘INT’

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

其中Userpages是定製的可變業務對象和selectReturnsDictionary<string,object>類型的屬性,但我得到了

"Operator '==' can't be applied to operators of type 'object' and 'int'.

我想投「1」對象的錯誤,但似乎還沒有正確的」。 任何人都可以幫助我?!

+1

你是否缺少演員?在「x.SelectReturns [」Permission_ID「]」....之前可能是「(int)」。 –

回答

7

你看起來比較像這樣

x.SelectReturns["Permission_ID"] == 1 

,其中左側是一個對象。所以把你的object分成Int然後做比較。

Convert.ToInt32(x.SelectReturns["Permission_ID"])==o 
0

如果字典查找的輸出放心是int類型,你可以做到以下幾點:

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

注:我也做了LINQ簡單一點。

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");    
} 
相關問題