繁体   English   中英

LINQ具有多个AND和OR运算

[英]LINQ With multiple AND and OR Operations

我正在尝试选择满足以下条件的模型:
所有不具有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();

我构造查询正确吗?

我不知道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”,因为它不会为您提供“所有”模型,但正如函数名所示,它是第一个模型或默认模型(空)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM