Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 此函数只能从LINQ调用到实体。全部()_C#_Lambda_Asp.net Mvc 5 - Fatal编程技术网

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)){…}哇,就是这样..奇怪的是,错误让我看错了行。。