Проблемы с выражениями динамического поиска в EF - PullRequest
2 голосов
/ 23 февраля 2011

В настоящее время я использую структуры данных, подобные следующим:

public class Individual
{
    //Other properties omitted for brevity sake

    public List<IndividualName> IndividualNames {get; set;}            
}

и

public class IndividualName
{
    public string FamilyName {get; set;}
    public string GivenName {get; set;}
    public string MiddleName {get; set;}
}

Я пытаюсь использовать некоторые выражения динамического поиска, чтобы перейти от уровня презентации к уровню хранилища (чтобы фактически применить поиск).

Однако у меня возникли некоторые проблемы из-за того, что у индивидуума могут быть индивидуальные имена 1-M, и я пытаюсь использовать LINQ, чтобы получить все индивидуальные имена индивидуума, чтобы их можно было запросить.

Например, ради - вот как выглядит выражение:

searchExpressions.Add(new SearchExpression("Individual
                                           .IndividualNames
                                           .Select(GivenName)
                                           .FirstOrDefault()"
             , ComparisonOperator.Contains, "Test");

В настоящее время это будет определять только то, содержит ли GivenName в первом экземпляре IndividualName значение «Test». Вышеуказанное работает так, как должно - но я немного застрял в том, как определить, содержит ли строка любое из IndividualNames.

Буду признателен за любую помощь - поскольку я попробовал несколько вещей без какой-либо удачи.

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

Я думаю, вы бы искали ....

searchExpressions.Add(new SearchExpression("Individual
                                            .IndividualNames
                                            .Select(GivenName)",
                      ComparisonOperator.Contains, "Test");

Вам также необходимо добавить метод Contains Aggregate в библиотеку Dynamic Linq. Как это сделать можно найти здесь. http://blog.walteralmeida.com/2010/05/advanced-linq-dynamic-linq-library-add-support-for-contains-extension-.html

0 голосов
/ 24 февраля 2011

я не уверен, что это применимо в вашем случае, но, может быть, эта лямбда?

Individual.IndividualNames.Where(x => x.GivenName == "Test")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...