首页 > 解决方案 > 为什么我在 Linq 查询中的 where 条件无法正常工作?

问题描述

我有一个 linq 查询,我有以下 where 条件:

where obj.DATUMREAL == date && (real == 2 ? true : (obj.ZAPKONC == null ? 0 : ((bool)obj.ZAPKONC ? 1 : 0)) == real)

如果我将参数设置real为 2,它可以正常工作,但如果我将其设置为 1 或 0,where 语句只会忽略第一个条件obj.DATUMREAL == date,它只过滤 && 之后的第二部分。

这是整个查询:

var result = (from obj in entities.OBJKVPOPLANU
              where obj.DATUMREAL == date 
                    && (real == 2 ? 
                           true : (obj.ZAPKONC == null ? 0 
                                      : ((bool)obj.ZAPKONC ? 1 : 0)) == real)
              group obj by obj.VODSISTEM into objg
              join v in entities.SIVODSISTEM 
              on objg.FirstOrDefault().VODSISTEM equals v.SIFRA.ToString()   
              into vj
              from subpet in vj.DefaultIfEmpty()
              select new
              {
                  subpet.SIFRA,
                  STEV = objg.Count(),
                  subpet.NAZIV
              }).ToList();
              return result;

如果我将real值设置为 2,我会返回 30 个项目,这些项目会被 where 的第一部分过滤,但如果我将其设置为 1 或 0,我会得到更多完全忽略 where 的第一部分的项目。

更新

我通过交换周围的两个部分来解决它where statement。我不知道是什么问题

标签: c#linq

解决方案


推荐阅读