【发布时间】:2013-04-02 11:29:35
【问题描述】:
我有以下代码...
examinerSpec.Predicate = examinerSpec.AndExpression(examinerSpec.Predicate,
centreTemp =>centreTemp.ExaminerCentreAssociations.Any(
examinerTemp =>examinerTemp.CentreRegionMaps.CentreNumber.
Contains(**currentCentreNumber**) &&
examinerTemp.CentreRegionMaps.Active == true &&
examinerTemp.DateStart <= DateTime.Now &&
(!examinerTemp.DateEnd.HasValue ||
examinerTemp.DateEnd.Value >= DateTime.Now)));
Contains(currentCentreNumber) 中的CurrentCentreNumber 是一个字符串。我想使用 centerNumbers 的 IEnumerable。我尝试了以下...
examinerSpec.Predicate = examinerSpec.AndExpression(examinerSpec.Predicate,
centreTemp =>
centreTemp.ExaminerCentreAssociations.Any(
examinerTemp =>
examinerTemp.CentreRegionMaps.CentreNumber.
Any(currentCentreNumber) &&
examinerTemp.CentreRegionMaps.Active == true &&
examinerTemp.DateStart <= DateTime.Now &&
(!examinerTemp.DateEnd.HasValue ||
examinerTemp.DateEnd.Value >= DateTime.Now)));
这行不通。编译器告诉我“无法推断方法的类型参数”。
我真的需要在 IEnumerable 参数上过滤 ExamerTemp.CentreRegionMaps.CentreNumber。
非常感谢您的帮助。
【问题讨论】:
-
您在寻找类似于“IN”功能的东西吗? stackoverflow.com/questions/959752/where-in-clause-in-linq
-
嗯,是的,但我不知道如何将它集成到示例中的谓词代码中。
-
你必须扭转它们。你必须说
listOfCurrentCenterNumbers.Contains(examinerTemp.CentreRegionMaps.CentreNumber); -
谢谢罗伯特,但我已经尝试过了。我收到以下错误:“LINQ to Entities 无法识别方法 'Boolean Contains(System.String)' 方法,并且此方法无法转换为存储表达式。”