3

我应用了以下代码:

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 + ")"
};

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

4

2 回答 2

3

问题是CompanyCountry或者NaicsCodenull,您需要在尝试访问它们的属性之前检查这一点。例如,您可以将查询重写为:

var country = from cnty in this.GetAll<CompanyDefinition>()
              where cnty.IsImported && cnty.Company != null && cnty.Country != null && cnty.NaicsCode != null
              select new {
                  ...
              }
于 2012-08-24T14:22:42.537 回答
0

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

于 2012-08-24T14:21:18.730 回答