LINQ中的对象引用错误

时间:2012-08-24 14:09:26

标签: c# asp.net-mvc-3 linq

我已应用以下代码:

var country = from cnty in this.GetAll<CompanyDefinition>().ToList()
   where cnty.IsImported = true
   select new { 
      CompanyDefinitionID = cnty.CompanyDefinitionID
      , CompanyDefinitionName = cnty.Company.CompanyName + "(" + cnty.Country.CountryCode + "," + cnty.NaicsCode.NaicsCode1 + ")"
};

我收到对象参考错误。它指向“选择新”。什么是正确的方法?

2 个答案:

答案 0 :(得分:3)

问题是CompanyCountryNaicsCodenull,在尝试访问其属性之前,您需要检查此问题。例如,您可以将查询重写为:

var country = from cnty in this.GetAll<CompanyDefinition>()
              where cnty.IsImported && cnty.Company != null && cnty.Country != null && cnty.NaicsCode != null
              select new {
                  ...
              }

答案 1 :(得分:0)

如果您正在使用延迟加载,那么使用ToList()方法是不正确的。致电ToList()后,IQueryable<>对象具体化为IEnumerable<>;因此,不会查询CompanyCountry引用的数据库。尝试删除ToList()功能。