0

这确实是我好奇的一个问题,因为我知道还有其他方法可以解决这个问题。

我的“Item”类有一个属性——“MyProperty”——我想评估它。我想遍历集合-“MyItemCollection”-,如果有一个“Item”类,其属性“MyProperty”不是什么,我想设置一个布尔标志以指示该集合在任何一个上都包含非空 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 表达式不能转换为 'Boolean' 因为 'Boolean' 不是委托类型”的错误

无论如何要使此函数类型的返回安全,还是我应该只使用不同的方法(旧式函数)?

谢谢。

4

2 回答 2

3

我认为您想将其声明为Func(Of Boolean)

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

据我所知,这不是创建属性(根据您的第一段)。为什么不将其声明为普通属性?

于 2010-02-03T12:01:29.660 回答
0

这可能更清楚,因为 linq 表达式匹配集合中不为空的任何项目,例如:

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