2014-10-01 29 views
0
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

回答

2

b爲空怎麼一回事,因爲你明確你的查詢大聲說道,b應該null如果序列是通過您使用的DefaultIfEmpty空。如果您不希望在該序列爲空時有nullb項目,請省略該操作。如果你這樣做,那麼你需要支持在你的查詢中有一個空值b

0

請注意,您正在使用.Where個子句中的多個項目,這些子項可能爲null,因此會從這些lambda表達式的任何一箇中拋出此異常。在這兩個集合上嘗試使用.Where(o => o != null),這可能會清除該錯誤。