首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用方法语法的LINQ查询

使用方法语法的LINQ查询
EN

Stack Overflow用户
提问于 2020-04-30 12:03:05
回答 3查看 66关注 0票数 0

我的要求是,仅当我从列表中找到任何IsCurrent = true的值时,才设置布尔值(IsPC=true),第二个条件是过滤带有G或W代码的列表,第三个条件是检查PCBNumber length ==15,其中只有一个来自列表。

使用下面的LINQ方法语法,我可以在多短的时间内减少以下查询

代码语言:javascript
复制
     var CurrentQ= p.List.Where(x => x.IsConCurrent== true);
            if (CurrentQ.Count() > 0)
            {
                var NCurrentQwithWorQ = p.List.Where(x => x.Codes == Codes.W|| x.Codes== Codes.Q).Count();
                if (NCurrentQwithWorQ  != null)
                {
                    var PCBNumber = p.List.Where(x => x.PCBNumber .Length == 15).Count();
                    if (PCBNumber == 1)
                    {
                        isPC = true;
                    }
                }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-04-30 12:14:47

您可以在同一个查询中使用所有条件,如下所示:

代码语言:javascript
复制
var PCBNumber= p.List.Where(x => x.IsConCurrent== true && (x.Codes == Codes.W|| x.Codes== Codes.Q) && x.PCBNumber.Length == 15);
if (PCBNumber !=null && PCBNumber.Count() == 1)
{
   isPC = true;
}
票数 0
EN

Stack Overflow用户

发布于 2020-04-30 13:11:46

我并不是在尝试调试您编写的内容,但这不正是您想要的吗--即以菊花链形式连接Where条件?

var isPC = p.List.Where(x => x.IsConCurrent == true).Where(x => x.Codes == Codes.W || x.Codes == Codes.Q).Where(x => x.PCBNumber.Length == 15).Count() == 1;

票数 0
EN

Stack Overflow用户

发布于 2020-05-01 00:42:52

上面提出的两种解决方案都是正确的。

代码语言:javascript
复制
p.List.Where(x => x.IsConCurrent== true && (x.Codes == Codes.W|| x.Codes== Codes.Q) && x.PCBNumber.Length == 15);
p.List.Where(x => x.IsConCurrent == true).Where(x => x.Codes == Codes.W || x.Codes == Codes.Q).Where(x => x.PCBNumber.Length == 15).Count()

实际上,它们是以相同的方式执行的。Where函数不强制在数据源中立即迭代。只有当您执行Count函数时,LINQ才会逐行处理并逐个执行criterion,以找出应该计算哪些值。

我只能建议您在where子句之后添加Take(2)运算符。在这种情况下,LINQ将在找到与提供的条件匹配的前两行后停止,其他行将不会被处理。

代码语言:javascript
复制
p.List.Where(x => x.IsConCurrent == true)
   .Where(x => x.Codes == Codes.W || x.Codes == Codes.Q)
   .Where(x => x.PCBNumber.Length == 15)
   .Take(2).Count()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61515722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档