首页 资讯 热点 行情 地区 推荐 民宿 酒店 家居 度假 滚动
首页 >  资讯 > 正文

每日速讯:NX二次开发-LINQ中的陷阱SkipWhile

2023-05-31 12:58:36来源:软服之家


(相关资料图)

作者:谭弘利 审校:凌俊

适用版本:NX7.0及以上版本

微软在2007年随着.NET Framework3.5发布了LINQ技术,LINQ定义了很多关于便于查询的扩展函数。NX 8.0开始支持.NET4.0,虽然NX7.0的开发库用.NET2.0编译,但也可以使用.NET3.5开发。这样我们在用C#做NX二次开发时,当需要大量查询的时候,一般都会直接只用LINQ里面很多函数。但是我最近使用了SkipWhile函数,一开始错把SkipWhile当成了SkipWhere,导致程序查询结果不准确而报错。一直以为是忽略掉满足条件的元素,我仔细查询了相关文档之后,梳理了一下SkipWhile函数的解释,总结如下:

从第一个满足条件的元素开始,返回剩余所有的元素,包含这个第一个满足条件的元素。

详细说明

使用ILSPY反编译SKipWhile函数实现部分的代码,结果如图1,满足条件后,变量yielding=true,返回后续剩余的元素。

图1

测试代码如下,跳过不能被3整除的元素。当3能被3整除,返回3,后面的7和2即使不满足被3整除,也会返回。

图2

那如果想要实现SkipWhere,该如何实现呢?结合LINQ的Where函数代码,整理如下图。一般情况下,使用Where都能满足需求了,只有当过滤的匿名函数太复杂,才会用到这种SkipWhere函数。

图3

标签: