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

C# EF中动态搜索表达式的问题,c#,.net,linq,entity-framework,C#,.net,Linq,Entity Framework,我目前使用的数据结构与以下类似: public class Individual { //Other properties omitted for brevity sake public List<IndividualName> IndividualNames {get; set;} } 我试图使用一些动态搜索表达式从表示层传递到存储库层,以实际应用搜索 但是,我遇到了一些问题,因为一个人可以有1-M个个人姓名,我尝试使用LINQ获取一个人

我目前使用的数据结构与以下类似:

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

    public List<IndividualName> IndividualNames {get; set;}            
}
我试图使用一些动态搜索表达式从表示层传递到存储库层,以实际应用搜索

但是,我遇到了一些问题,因为一个人可以有1-M个个人姓名,我尝试使用LINQ获取一个人的所有个人姓名,以便可以查询这些姓名

例如,这是表达式当前的样子:

searchExpressions.Add(new SearchExpression("Individual
                                           .IndividualNames
                                           .Select(GivenName)
                                           .FirstOrDefault()"
             , ComparisonOperator.Contains, "Test");
这将当前仅确定第一个IndividualName实例中的GivenName是否包含Test。上面的工作应该是这样的-但是我有点困惑于如何确定是否有任何单个名称包含该字符串


任何帮助都将不胜感激,因为我已经尝试了一些没有任何运气的事情。

我不确定这是否适用于您的情况,但可能是这个lambda

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

我不确定这是否适用于你的情况,但也许这个兰姆达

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

我想你会在找

searchExpressions.Add(new SearchExpression("Individual
                                            .IndividualNames
                                            .Select(GivenName)",
                      ComparisonOperator.Contains, "Test");
您还需要将Contains聚合方法添加到动态Linq库中。如何做到这一点可以在这里找到。
我想你会在找

searchExpressions.Add(new SearchExpression("Individual
                                            .IndividualNames
                                            .Select(GivenName)",
                      ComparisonOperator.Contains, "Test");
您还需要将Contains聚合方法添加到动态Linq库中。如何做到这一点可以在这里找到。

谢谢你的建议,Menahem,但我仍然无法找到解决方案。到目前为止,动态搜索表达式还不能很好地使用lambdas。我明白了。那么,使用Contains和implementing IEquatable怎么样?谢谢你的建议,但是我仍然没有找到解决方案。到目前为止,动态搜索表达式还不能很好地使用lambdas。我明白了。那么使用Contains和implementing IEquatable怎么样?这正是我想要的-谢谢Blane!正是我想要的-谢谢Blane!