Есть ли способ использовать лямбда-выражения в RuleSetDialog для определения условия? - PullRequest
1 голос
/ 28 сентября 2010

Я использую движок правил от WF в приложении, и некоторые условия включают поиск условия в коллекции. Было бы идеально сделать что-то вроде:

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

К сожалению, у меня нет доступа к расширениям Linq для коллекций. Я попытался передать System.Data.Linq через TypeProvider параметр для RuleSetDialog, но это не привело к появлению методов Linq.

Любая помощь или идеи приветствуются!

Ответы [ 2 ]

2 голосов
/ 28 сентября 2010

У меня нет опыта работы с WF, поэтому мой ответ основан только на том, что я видел в Интернете до сих пор. Вы можете проверить это сообщение в блоге .

Проблема с редактором набора правил состоит в том, что он не позволяет использовать лямбда-выражения. Они все еще не первоклассные граждане в мире инструментов разработки .NET, например Непосредственное окно их тоже не скомпилирует.

Насколько я узнал, нет готового решения этой проблемы, но мне оно подходит:

Поместите все ваши стиль кода LINQ элементы в свойствах или методах, которые вы можете получить доступ из условия окно. Не превосходный ответ, но это работает в безвыходном положении.

Вы можете определить свойство, как

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

, а затем используйте это свойство в выражении множества. Я также хотел бы отметить, что использование Любой метод расширения является предпочтительным для определения, если последовательность не пуста, потому что Любой не требует перечисления всех элементов.

Пожалуйста, дайте мне знать, что это работает для вас.

0 голосов
/ 28 сентября 2010

Мне удалось получить доступ к расширениям, если я использую синтаксис запроса вместо синтаксиса лямбды.

Пример: From x in CollectionObject select etc...

Редактировать: Добавлено изображение

alt text

...