2011-10-25 12 views
0

私はクラスプロパティCustomerを持っています。これには、プロパティAnyを含むプロパティ拡張が含まれています。 vb.netのヌル合体演算子を連鎖する方法は?

は、私が実行しようとしました:

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

が、それはそれは、着信XMLで拡張要素を見つけられませんでしたエラーを投げました。最初の表現がNothingであることが分かったら、何も返さないと思った。この場合、複数のif文を実行する必要がありますか?

答えて

1

はい、少なくとも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

[OK]を、私はそれを試してみるだろう。あなたの最初の例では、LINQを使用していて、Any(0)がInnerTextを返しますか? – Xaisoft

+0

また、第1および第2の例では、IIfでなくてもよいか? – Xaisoft

+0

@Xaisoft:はい、私はリンクを使用しています。そして、いいえ、Any(0)は 'IndexOutOfRangeException'を引き起こします。そして2番目の例では、そうではありません。 VB 2008で従来の 'IIf()' *関数*を 'If()'演算子に置き換えました。 'If()'は私が知る限り「ヌル合体」ではないので、インライン条件付きです。 – Ryan

関連する問題