我最近需要检查两个列表,以查看预期索引处的数据类型是否与预期类型匹配.所以我对每个索引i处的每个元素x进行了检查,并将此比较存储为布尔值,然后我调用Any来查看是否有任何布尔值为真.但是,以下语句始终抛出异常.
var values = new object[] {(UInt64) 40,(Boolean) true,(Double) 45.3}; var types = new[] {typeof (UInt64),typeof (Boolean),typeof (Double)}; if (types.Select((x,i) => values[i].GetType() != x).Any()) throw new Exception();
(我知道为什么,但经过几分钟的调试后,我认为这会成为一个很好的问题).
解决方法
任何()不会做你认为它做的事情.如果在Any()中没有lambda表达式,它只会检查枚举中是否有任何元素被调用.
你要么:
types.Select((x,i) => values[i].GetType() != x).Any(x => x)
或者可能
types.Where((x,i) => values[i].GetType() != x).Any()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。