2012-04-30 123 views
2

我有一個方法來獲得的項目數量,但有一個例外傻得到stucked:空引用異常,而使用伯爵

internal static bool IsCompanyInList(int companyId, int favoritecompanyId) 
     { 
      var result = _context.FavouriteCompanies.Count(c => c.CompanyId == companyId && c.FavouriteCompanyId == favoritecompanyId); // getting exception here 
      if (result >0) 
       return true; 
      return false; 
     } 

此外,一個更線索,我的表是空的。根本沒有排。如何處理這種情況。 我也試過Where子句。見下:

var result = _context.FavouriteCompanies.Where(criteria_here); 
+5

把調試器放在線上看看什麼是空 - 我的猜測是_context變量。 – Paddy

+1

你在哪裏定義你的_context?這是一個涉及實例成員的靜態方法? – walther

+0

_context是靜態的.. –

回答

2

FavouriteCompanies爲空。你可以這樣做:

internal static bool IsCompanyInList(int companyId, int favoritecompanyId) 
      { 
       var result = _context.FavouriteCompanies; 
       if (result!=null) 
       { 
        return result.Any(c => c.CompanyId == companyId && c.FavouriteCompanyId == favoritecompanyId); 
       } 

       return false; 
      } 

在該解決方案if (result>0)是多餘的。

2

那麼這將有助於如果你可以包括堆棧,但我認爲FavouriteCompanies集合中有一個空值(或者_context變量爲空 - 如果你鏈接了很多方法與一個「。」你得到一列火車殘骸,很難說出什麼是零)。你可以避開這個防守通過刪除空:

var result = _context.FavouriteCompanies.Where(c => c != null).Count(...) 

但說實話這會好得多,找出一個空已插入FavourieCompanies並停止在那裏。

2

錯誤可能是您嘗試訪問成員的任何地方。

var result = _context.FavouriteCompanies.Count(c => c.CompanyId == companyId && c.FavouriteCompanyId == favoritecompanyId); 

is _context null? 是_context.FavoriteCompanies null? FavoriteCompanies是否包含CompanyId或FavouriteCompanyId爲空的記錄?

由於這是Linq2Sql,所以在訪問成員本身之前,可以在count子句中詢問c.FavouriteCompanyId.Isnull()。

1

對我來說,字符串之一(或可空列)值爲空。

 var result = _context.FavouriteCompanies.Count(c => c.CompanyId != null && c.CompanyId == companyId && c.FavouriteCompanyId != null && c.FavouriteCompanyId == favoritecompanyId);