定義我得到這個錯誤,我非常有信心是什麼導致它,但不是很確定如何解決它。C# - 二進制運算符Equal沒有爲類型'System.Int64'
我使用entity framework code first
,我有我的實體的一個外鍵,我故意設置爲long?
:
public long? ClientId { get; set; }
public virtual Client Client { get; set; }
然後我用數據形成創建填充DataGridView
數據庫,問題來了。我正在通過dgv
的元素使用自定義搜索/篩選,並且此自定義篩選的代碼被繼承。它一直工作到現在爲止,但當我嘗試過濾ClientID
我得到錯誤的帖子名稱。
我開始調試,看到這一點:
if (property.PropertyType == typeof(string))
{//some code
else if (property.PropertyType == typeof(bool))
{//other code
else if(rule.Data.Equals("1") || rule.Data.ToLower().Equals("true"))
{//again some code
else if (property.PropertyType == typeof(Int32))
{//some code
...
而且因爲我的值類型爲long?
我不那麼下面的條件讓我的代碼進入它是默認條件:
else
{
long value = 0;
if (long.TryParse(rule.Data, out value))
{..code
根據調試器解析返回true,因爲我進入if
正文,但然後我收到上面的錯誤和我的屬性的類型是System.Nullable1[System.Int64]
。
我有第二個外鍵,它使用完全相同的邏輯,一切都很好。唯一的區別是,我可以看到,對於工作案例,類型爲long
,錯誤案例類型爲long?
。
我想離開類型long?
,但不知道是否有任何解決方法。
因此,您在未向我們顯示的代碼中收到錯誤,我是否正確理解該錯誤? – 2013-02-26 12:23:19
「你看到那個代碼」在哪裏?該方法的目的是什麼(該方法的名稱有助於識別)。另一個非常重要的問題是:什麼是錯誤? – 2013-02-26 12:30:54
是的,該項目非常大,所以我試圖找出問題。如果我不明白,那麼我想我必須自己做。但是fwi調用這個方法的代碼是'GridFilterResult result = service.List(gridSettings);'。但我認爲這個問題是我試圖把'long?'解析爲'long'我試圖給'long?添加一個特定的情況,但是似乎不允許解析爲'long?'...... –
Leron
2013-02-26 12:31:01