热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#LINQ过滤器IEnumerable<IX>并表示为IEnumerable<X:IX>

如何解决《C#LINQ过滤器IEnumerable<IX>并表示为IEnumerable<X:IX>》经验,为你挑选了1个好方法。

显然,这是不可能投WhereEnumerableIteratorIEnumerable

public interface IX 

public class X1 : IX 
public class X2 : IX

public void Method1(IEnumerable arg)
{
    var filtered = arg.Where(e => e.GetType() == typeof(X2));
    // filtered will be of type WhereEnumerableIterator
    Method2(filtered as IEnumerable);
}

public void Method2(IEnumerable arg) 
{
    // at runtime arg will be null
}

显然,CLR无法投WhereEnumerableIteratorIEnumerable和集导致空(有点神秘).

似乎合乎逻辑的是,可以应用过滤器IEnumerable并将结果表示为IEnumerable(实际上没有枚举).

但是怎么做呢?



1> Yeldar Kurma..:

它发生了,因为filteredIEnumerable(即使它只包含X2过滤后的项目)并且无法直接转换为IEnumerable.
你可以这样做并投下你的IEnumerable:

var filtered = arg.Where(e => e.GetType() == typeof(X2)).Cast();
// filtered will be of type WhereEnumerableIterator now
Method2(filtered);

但您可以根据其元素的类型Enumerable.OfType过滤IEnumerable:

public void Method1(IEnumerable arg)
{
    var filtered = arg.OfType();
    Method2(filtered);
}

public void Method2(IEnumerable arg) 
{

}


推荐阅读
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • MPLS VP恩 后门链路shamlink实验及配置步骤
    本文介绍了MPLS VP恩 后门链路shamlink的实验步骤及配置过程,包括拓扑、CE1、PE1、P1、P2、PE2和CE2的配置。详细讲解了shamlink实验的目的和操作步骤,帮助读者理解和实践该技术。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • 本文介绍了在实现了System.Collections.Generic.IDictionary接口的泛型字典类中如何使用foreach循环来枚举字典中的键值对。同时还讨论了非泛型字典类和泛型字典类在foreach循环中使用的不同类型,以及使用KeyValuePair类型在foreach循环中枚举泛型字典类的优势。阅读本文可以帮助您更好地理解泛型字典类的使用和性能优化。 ... [详细]
  • 本文介绍了如何通过维持两个堆来获取一个数据流中的中位数。通过使用最大堆和最小堆,分别保存数据流中较小的一半和较大的一半数值,可以保证两个堆的大小差距为1或0。如果数据流中的数量为奇数,则中位数为较大堆的最大值;如果数量为偶数,则中位数为较大堆的最大值和较小堆的最小值的平均值。可以使用优先队列来实现堆的功能。本文还提供了相应的Java代码实现。 ... [详细]
  • 抽空写了一个ICON图标的转换程序
    抽空写了一个ICON图标的转换程序,支持png\jpe\bmp格式到ico的转换。具体的程序就在下面,如果看的人多,过两天再把思路写一下。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
  • 由于工作需要,接手别人用bpel写的工作流程序,一点都不懂就到网上找到一篇入门的文章,觉得这篇不错,就copy下来并添加了读书笔计以红字标记,感激写此文章的人.许多开发人员觉得BPEL很神秘,不知道 ... [详细]
  • GPIO实现I2C从机的设计[2]
    在上篇文章中,实现了GPIO模拟I2C从机的初步设计,但在实际的使用过程中,发现了一些问题,为了解决实际传输过程中发生的数据传输错误问题,在本篇文章中,会根据实际测试情况对上篇的代码做一些修改。 ... [详细]
  • Java动态代理的应用
    MathJax.Hub.Config({showMathMenu:false}); ... [详细]
  • 长话短说,尝试利用Google的良好做法。我为Di计划使用Dagger2犯了一个错误。现在我被 ... [详细]
  • 原创我的网址http:blog.csdn.nethsuyuan如有错误请指正八.类对于面向对象语言来说,类是重头戏,C#中类的使用和C++中类似,在细节方面有些 ... [详细]
author-avatar
大佬銘銘銘銘銘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有