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!