C# 此函数只能从LINQ调用到实体。全部()
我有一个C# 此函数只能从LINQ调用到实体。全部(),c#,lambda,asp.net-mvc-5,C#,Lambda,Asp.net Mvc 5,我有一个列表属性,设置如下: testCard.LstSummaries = db.Summaries.Where( x => (x.AID == aId || x.AInformation.RegNumber == aRegNumber) && DbFunctions.TruncateTime(x.Day) == DateTime.Today.Date && x.deleted ==
列表
属性,设置如下:
testCard.LstSummaries =
db.Summaries.Where(
x =>
(x.AID == aId || x.AInformation.RegNumber == aRegNumber) && DbFunctions.TruncateTime(x.Day) == DateTime.Today.Date &&
x.deleted == false).ToList();
然后我有一个条件语句:
if (testCard.LstSummaries.Count > 0)
{
if (
testCard.LstSummaries.All(
x =>
(x.AID == aId || // ERROR HAPPENS ON THIS LINE
x.AInformation.RegNumber == aRegNumber) &&
DbFunctions.TruncateTime(x.Day) == DateTime.Today.Date && x.deleted == false))
{
// .... do something
}
我得到一个错误:
此函数只能从LINQ调用到实体
我希望避免多次调用数据库。。此外,testCard.lstsumres
已经有了我想要的值。。但如果我这样做:
if (testCard.LstSummaries.Count > 0)
{
if (
db.Summaries.All(
x =>
(x.AID == aId || // NO ERROR
x.AInformation.RegNumber == aRegNumber) &&
DbFunctions.TruncateTime(x.Day) == DateTime.Today.Date && x.deleted == false))
{
// .... do something
}
我觉得调用数据库毫无意义,因为我将检索已存储在testCard.lstsumres
中的相同结果,但我无法调用.All()
,因为它不是LINQ to Entities
是否有解决方法?问题在于DbFunctions.TruncateTime(x.Day),因为它在运行时转换为sql。尝试不使用它进行检查。first Try“if(testCard.lstsumres.All(x=>x.AID==AID)){…}哇,就是这样..奇怪的是,错误让我看错了行。。