LINQ查询中的对象引用错误

问题描述:

var query1 = from a in inputDataRecords 
      from b in employeeDataRecords 
        .Where(badgeNumber => a.Responsi == badgeNumber.Badge) 
        .Where(badgeNumber => a.Auth == badgeNumber.Badge) 
        .Where(badgeNumber => a.ByN == badgeNumber.Badge) 
        .DefaultIfEmpty() 
        select new {a, 
           responsibleName = b.EmployeeName, 
           authName = b.EmployeeName, 
           createName = b.EmployeeName}; 

给我一个错误:对象引用未设置为对象的实例。 我知道这是因为我没有参考bLINQ查询中的对象引用错误

但改变选择:

select new {a, b, 
      responsibleName = b.EmployeeName, 
      authName = b.EmployeeName, 
      createName = b.EmployeeName}; 

没有帮助。快速查询query1显示b为空。

+0

b如何与a? – 2014-10-01 18:51:41

+2

'.DefaultIfEmpty()'如果它不符合你的标准条件,会导致'b'为空。 – jrummell 2014-10-01 18:53:05

+0

@Allan - a和b都有一个badgeNumber的公共字段 – KTLind 2014-10-01 19:07:39

b为空怎么一回事,因为你明确你的查询大声说道,b应该null如果序列是通过您使用的DefaultIfEmpty空。如果您不希望在该序列为空时有nullb项目,请省略该操作。如果你这样做,那么你需要支持在你的查询中有一个空值b

请注意,您正在使用.Where个子句中的多个项目,这些子项可能为null,因此会从这些lambda表达式的任何一个中抛出此异常。在这两个集合上尝试使用.Where(o => o != null),这可能会清除该错误。