0

問題を回避する他の方法があることを私は知っているので、これは私の好奇心に対する質問です。

「Item」クラスに評価したいプロパティ「MyProperty」があります。コレクションを繰り返し処理したい-"MyItemCollection"-プロパティ"MyProperty"が何でもない"Item"クラスがある場合、コレクションにnull以外のMyPropertyが含まれていることを示すブールフラグを設定したいその「アイテム」オブジェクト。

Private ContainsPOF = Function() (From thisItem As Item In MyItemCollection Where Item.MyProperty IsNot Nothing Select item).Count > 0

これにより、「「As」句のない変数のデクレレーション、想定されるオブジェクトのタイプ」という警告が表示されるので、試してみました

Private ContainsPOF As Boolean = Function() (From thisItem As Item In MyItemCollection Where Item.MyProperty IsNot Nothing Select item).Count > 0 subc).Count > 0

ただし、これにより、「Lamda式は'ブール値'に変換できません。'ブール値'はデリゲート型ではないため」というエラーが発生します。

この関数タイプの戻りを安全にする方法はありますか、それとも別のメソッド(古いスタイルの関数)を使用する必要がありますか?

ありがとう。

4

2 に答える 2

3

Func(Of Boolean)代わりに次のように宣言したいと思います。

Private ContainsPOF As Func(Of Boolean) = [...]

私が見る限り、それはプロパティを作成していません(最初の段落のように)。通常のプロパティとして宣言してみませんか?

于 2010-02-03T12:01:29.660 に答える
0

これは、コレクション内のnullではないアイテムに一致するlinq式としてより明確になる可能性があります。例:

ContainsPDF = ThisCollection.Any(x=>x.MyClass IsNot Nothing);
于 2010-02-03T12:00:57.687 に答える