2014-10-16 23 views
0

我有一個對象列表,其中有一個屬性customerId,它是一個可以爲null的System.Guid屬性。 我也有一個System.Guid類型的id列表,我也給這個列表添加了一個Guid.Empty值。LinQ:加入值爲null的可空屬性

我嘗試在兩者上執行連接,但不返回具有空的GUID的對象。

Dim dos = (From d In documents Join c In allowedCustomers On c Equals If(d.CustomerGuid = Nothing, System.Guid.Empty, d.CustomerGuid) Select d).Skip(10 * (pageNr - 1)).Take(10).ToList 

有什麼問題?還有另一種更好的方式來做到這一點嗎?

回答

2

您正在使用d.CustomerGuid = Nothing但您必須使用d.CustomerGuid Is Nothing

嘗試使用VB.NET's null-coalescing operator的這種方法。

Dim query = From doc In documents 
      Join custID In allowedCustomers 
      On If(doc.CustomerGuid, Guid.Empty) Equals custID 
      Skip 10 * (pageNr - 1) 
      Take 10 
      Select doc 
Dim docList = query.ToList() 

注意,您可以增加可讀性與多條線路,另外,VB.NET的查詢語法比C#功能強大,所以你可以在查詢中使用SkipTake