1

我在应用程序中使用来自 WF 的规则引擎,其中一些条件涉及在集合中搜索条件。理想的做法是:

this.CollectionObject.Select(x => x.WantedProperty == searchValue).Count() > 0

不幸的是,我似乎无法访问集合的 Linq 扩展。我尝试通过参数传递,System.Data.Linq但这TypeProviderRuleSetDialog没有使 Linq 方法出现。

任何帮助或想法表示赞赏!

4

2 回答 2

2

我对 WF 没有任何经验,所以我的回答仅基于我目前在网络上看到的内容。您可能想查看这篇博文

规则集编辑器的问题在于它不允许使用 lambda 表达式。它们仍然不是.NET 开发工具世界中的一等公民,例如即时窗口也不会编译它们。

据我所知,这个问题没有开箱即用的解决方案,但这个对我来说看起来不错:

将所有 LINQ 代码样式项放在属性或方法中,然后您可以从“条件”窗口访问它们。不是一个极好的答案,但它可以在绑定中工作。

您可能想要定义一个属性,例如

public bool HasAnyBeatlesAlbums {
    get {
        return this.MusicLibrary.Any (cd => cd.Artist == "Beatles");
    }
}

然后在您的集合表达式中使用此属性。我还想指出,最好使用Any扩展方法来确定序列是否不为空,因为Any不需要枚举所有元素。

请让我知道它对你有用。

于 2010-09-28T16:57:48.837 回答
-1

如果我使用 Query 语法而不是 Lambda 语法,我就能够访问这些扩展。

前任:From x in CollectionObject select etc...

编辑:添加图像

替代文字

于 2010-09-28T16:44:18.920 回答