2011-10-25 52 views
0

我有一個一流的客戶包含了屬性擴展又包含該財產的任何。如何鏈接vb.net空合併運算符?

我試圖做的:

Dim room = If(customer.Extensions.Any.ElementAt(0).InnerText, Nothing) 

但它扔了,當它沒有發現進來的XML擴展元素的錯誤。我認爲一旦它看到第一個表達式是Nothing,它就什麼都不會返回。在這種情況下,我必須做一個多重if語句嗎?

回答

1

是的,你必須檢查至少一個元素。所以,你可以做的是:

Dim a = customer.Extensions.Any.FirstOrDefault() 
Dim room = If(a Is Nothing, Nothing, a.InnerText) 

取決於customer.Extensions.Any類型,你可以這樣做:

Dim room = If(customer.Extensions.Any.Count > 0, customer.Extensions.Any(0), Nothing) 
+0

好吧,我會試試看。在你的第一個例子中,你使用LINQ並將Any(0)返回InnerText? – Xaisoft

+0

另外,對於第一個和第二個示例,是不是必須是IIf? – Xaisoft

+0

@ Xaisoft:是的,我正在使用鏈接。不,任何(0)都會導致一個'IndexOutOfRangeException'。而在第二個例子中,沒有。該'如果()'操作取代傳統'IIF()'*功能*在2008年VB'如果()'不是「空聚結」據我所知,這是行內的條件。 – Ryan