Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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查询在LINQPad中工作,但在C中工作#_C#_Linq_Asp.net Core 2.2 - Fatal编程技术网

C# LINQ查询在LINQPad中工作,但在C中工作#

C# LINQ查询在LINQPad中工作,但在C中工作#,c#,linq,asp.net-core-2.2,C#,Linq,Asp.net Core 2.2,下面的LINQ查询在LINQPad中按预期工作,但当我在Web API中使用它时,它返回可为null的对象必须有一个值异常 这是我的密码 var GRStk = (from g in GRStkB4 join t1 in opTOs on g.itemCode equals t1.itemCode into temp1 from op in temp1.DefaultIfEmpty() selec

下面的
LINQ
查询在
LINQPad
中按预期工作,但当我在Web API中使用它时,它返回
可为null的对象必须有一个值
异常

这是我的密码

        var GRStk = (from g in GRStkB4
              join t1 in opTOs on g.itemCode equals t1.itemCode into temp1
              from op in temp1.DefaultIfEmpty()
              select new
              {
                   g.branchCode,
                   g.itemCode,
                   qty = g.availQty - op.opqty
               }).AsEnumerable().Where(w => w.qty > 0); // exception

       int ii = GRStk.Count(); // Exception with Nullable object must have a value.
我使用
Asp.Net Core 2.2

我无法理解它在LINQPad中是如何工作的,这里什么是可为空的?

当使用EF时,查询中的某些命令在客户端进行计算,但在LINQPad中不进行计算。i、 e如果op为null,则如果在客户端对op.opqty进行评估,则可能无法访问它

我想更改以下行可以解决您的问题:

...
                        select new
              {
                   g.branchCode,
                   g.itemCode,
                   qty = g.availQty - (op!= null ?  op.opqty : 0) //edit here!
               }).AsEnumerable().Where(w => w.qty > 0); // exception exception
...

试试下面的:int?ii=GRStk.Count();添加问号以接受空值。请缩进您的代码。在int ii=GRStk.Count()之前;查询本身返回异常。出于提问的目的,我使用了这一行,事实上,我会在GRStk上使用foreach。数量是十进制的,所以错误是“运算符”不能应用于十进制和十进制。当我添加(w.qty???(十进制)0)>0@Ramesh我编辑了我的答案。我希望你理解这里的要点。你需要检查op是否为空。