【发布时间】:2015-03-28 07:03:24
【问题描述】:
我正在尝试使用 TrueForAll 方法,但效果并不好。谁能帮帮我?
我的问题: 我有一个整数列表,例如 myIntList。我需要列表中的所有整数都满足某个条件。
例子:
List<TABLE1> myFinalList = db.TABLE1
.Where(myTable1 =>
myIntList.TrueForAll(myInt =>
db.TABLE2.Any(myTable2 =>
myTable2.field1 == myTable1.field1
&& myTable2.field2 == myInt)
&& db.TABLE3.Any(myTable3 =>
myTable3.field1 == myTable1.field1
&& myTable3.field2 == myInt))).ToList();
但是当我运行时,我得到以下异常:
LINQ to Entities does not recognize the method 'Boolean TrueForAll[Int32](Int32[], System.Predicate`1[System.Int32])' method, and this method cannot be translated into a store expression.
我已经尝试使用 Array.TrueForAll(),但错误仍然存在
... Array.TrueForAll(myIntList.toArray(), myInt => ...
想法?
【问题讨论】:
-
这意味着您的查询提供程序(实体框架)无法将其转换为正确的 SQL。
-
虽然您调用的方法不同,但错误和解决方案与此问题中的相同:stackoverflow.com/questions/18788784/… 基本上:您不能在实体中调用 TrueForAll-框架 LINQ 查询,您必须先将其强制为 LINQ to Objects 查询。
-
我尝试解决 TrueForAll() 方法的问题,但我使用了 All() 方法。我将更多地研究 TrueForAll() 以及他的工作原理。但是,即便如此,还是谢谢你。
标签: c# asp.net-mvc linq