LINQ具有多个AND和OR运算

时间:2017-10-27 12:57:49

标签: c# entity-framework linq

我正在尝试选择符合以下条件的模型:
所有没有strShortcuts的模型作为dto.ShortCut和strModel作为dto.Model除了 与dto.Idx具有相同idxModel的那些

var duplicate = _modelRepository.QueryWhere( dup=> dup.idxModel != dto.Idx 
                                                  && ( dup.strShortCut == dto.ShortCut 
                                                       || dup.strModel == dto.Model
                                                     )
                                           )
                                .FirstOrDefault();

我构建查询是否正确?

1 个答案:

答案 0 :(得分:0)

我不知道QueryWhere是什么,但除此之外,你应该检查:

var duplicate = _modelRepository.QueryWhere( dup=> dup.idxModel != dto.Idx 
                                                  && !( dup.strShortCut == dto.ShortCut 
                                                       || dup.strModel == dto.Model)
                                           )

......或更好:

var duplicate = _modelRepository.QueryWhere( dup=> dup.idxModel != dto.Idx 
                                                  && ( dup.strShortCut != dto.ShortCut 
                                                       && dup.strModel != dto.Model)
                                           )       

跳过' FirstOrDefault'因为它不会给你所有'模型,但正如函数名称所示,第一个或默认(null)