我有一个对象列表,其属性customerId是一个可以为空的System.Guid属性。 我还有一个System.Guid类型的id列表,我还在这个列表中添加了一个Guid.Empty值。
我尝试在两者上进行连接,但不返回带有空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
有什么问题?还有另一种方法可以更好地完成这项工作吗?
答案 0 :(得分: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#强大,因此您可以在查询中使用Skip
和Take
。