EF中动态搜索表达式的问题

时间:2011-02-23 17:15:22

标签: c# .net linq entity-framework

我目前正在使用类似于以下内容的数据结构:

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");

这将仅确定第一个IndividualName实例中的GivenName是否包含“Test”。上面的工作应该是这样 - 但是我在如何确定任何IndividualNames是否包含字符串方面有点卡住。

任何帮助都会受到赞赏 - 因为我已经尝试过几件事而没有任何运气。

2 个答案:

答案 0 :(得分:0)

我不确定这适用于您的情况,但也许这个lambda?

Individual.IndividualNames.Where(x => x.GivenName == "Test")

答案 1 :(得分:0)

我想你会找...... [/ p>

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

您还需要向Dynamic Linq库添加Contains Aggregate方法。如何做到这一点可以在这里找到。 http://blog.walteralmeida.com/2010/05/advanced-linq-dynamic-linq-library-add-support-for-contains-extension-.html