NX二次开发-LINQ中的陷阱SkipWhile

NX二次开发-LINQ中的陷阱SkipWhile

作者:谭弘利   审校:凌俊

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

NX二次开发-LINQ中的陷阱SkipWhile

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

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

详细说明
NX二次开发-LINQ中的陷阱SkipWhile

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

NX二次开发-LINQ中的陷阱SkipWhile

图1

NX二次开发-LINQ中的陷阱SkipWhile

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

NX二次开发-LINQ中的陷阱SkipWhile

图2

NX二次开发-LINQ中的陷阱SkipWhile

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

NX二次开发-LINQ中的陷阱SkipWhile

图3

相关厂商
logo
能科联宏(上海)信息科技有限公司
3.1w浏览
能科联宏(上海)信息科技有限公司(以下简称联宏科技)是一家专注于为汽车、轨道交通、通用机械、消费电子、航空航天、船舶等机械制造业领域内的广大用户提供面向工业4.0的全产品生命周期的数字化产品工程解决方案及全方位资深咨询服务的公司。2017年被上海市科委授予高新技术企业。业务主要涵盖:为制造企业提供数字化解决方案,为制造企业提供工业软硬件系统,为制造企业提供信息化系统建设服务。 2018年12月,联宏科技成为能科科技股份有限公司(股票代码:603859.SH)的全资子公司。经营上,联宏科技将继续独立运作。联宏科技与能科股份的协同互补将给联宏科技带来广阔的发展机遇。 联宏科技是西门子最高的铂金级别的合作伙伴,连续多年获得西门子大中华区更佳合作伙伴、西门子大中华区更佳市场、西门子更佳服务及更佳维护,多年的西门子亚太区更佳合作伙伴的荣誉。 联宏科技已经建立了华东、华北、西南、华南四个销售大区;组建了上海、北京、重庆、佛山四个技术中心;苏州研发中心;盐城、珠海二个人才基地。联宏科技拥有江苏联宏创能信息科技有限公司和联宏创能信息科技(香港)有限公司(United Grand Information...
 
相关阅读
返回顶部