草庐IT

ienumerable

全部标签

c# - 通过接口(interface)枚举 - 性能损失

我和我的同事有一点争执(这非常接近圣战:)),关于通过枚举器通过索引VS访问列表的性能。为了处理一些事实,我编写了以下测试:staticvoidMain(string[]args){constintcount=10000000;varstopwatch=newStopwatch();varlist=newList(count);varrnd=newRandom();for(inti=0;i实际上,它只是访问元素。如我所料,索引访问速度更快。这是在我的机器上发布构建的结果:0.0347//indexaccess0.0737//enumerating但是,我决定稍微改变一下测试://the

c# - 可以混合对象初始值设定项和集合初始值设定项吗?

我按照此处的说明使用IEnumerable定义了一个集合初始值设定项:http://msdn.microsoft.com/en-us/library/bb384062.aspx现在我可以在我的集合初始值设定项中创建对象,并且它们是通过我的Add()方法添加的,如下所示:classArrangedPanel:RectElement{privateListarrangedChildren=newList();publicintPadding=2;publicvoidAdd(RectElementelement){arrangedChildren.Add(element);//docusto

C# 列表框集合语法

在快速学习C#的同时,我遇到了这个Collection语法问题。我向列表框lstData添加了一些我自己的类型MyItem的对象。现在我需要在这个列表框中搜索并想到使用优雅的LINQ符号,例如:lstData.Items.Where(x=>x.Text==SearchString)但列表框的项目没有.Where(),尽管我确实包含了“usingSystem.Linq;”命名空间。所以我尝试了:foreach(MyItemitemin(MyItem)lstData.Items)但这会产生构建错误:无法将类型“System.Windows.Forms.ListBox.ObjectColle

c# - 将 IQueryable 转换为 IEnumerable 是否再次执行查询?

在我的查询中,我需要返回IEnumerable但我不知道此操作是否使查询再次执行?vardata=Repository.Find().AsEnumerable();Find()返回IQueryable因为IQueryable继承IEnumerable.我怀疑AsEnumerable进行重复执行。我知道vardata=Repository.Find().ToList()执行查询两次。一个用于Find()第二个是Tolist() 最佳答案 IQueryable是IEnumerable。没有转换,因此没有任何类型的工作在进行。当您显式调用

c# - 何时使用 IEnumerable 与 IObservable?

如何确定方法是否应返回IEnumerable或IObservable?为什么我会选择一种范式而不是另一种? 最佳答案 类型IEnumerable您反复从T的序列中“拉取”的IObservableT的序列正在向您“推”WhywouldIchooseoneparadigmovertheother?您通常不会“选择”一种范式而不是另一种范式。通常一个自然而然地脱颖而出成为正确的选择,而另一个则没有任何意义。例子考虑以下示例:一个巨大的CSV文本文件每行都有一个项目,您希望一次处理一个项目而不是一次将整个文件加载到内存中:IEnumerab

c# - 在 IEnumerable<T> 中选择偶数/奇数元素?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Gettingodd/evenpartofasequencewithLINQHowcanIgeteverynthitemfromaList?我正在使用HtmlAgilityPack和C#来解析一些HTML。基本上,我有这些元素,每个元素都在它们自己的对象中,在IEnumerable中。有没有一种优雅的方法来获取集合中的每个N/2元素。意思是,跳过每个带有.ruler类的div?我需要遍历结果集,所以我要么将每个找到的对象复制到一个新的IEnumerable中,要么只在foreach函数中内联使用它。例如://

c# - 使用反射检查 IEnumerable<T>

编辑这个问题的基本版本是,如果我有一些objecto,我将如何检查o是否属于实现IEnumerable的某种类型有反射(reflection)?最初的问题要具体得多,但对上述问题的回答也一样好。对不起,如果我在这个问题上给出了太多的细节结束编辑以下是一个设计的ValueInjecterPOC。除isCollectionMapping外一切正常方法在最底层。当且仅当源属性和目标属性都是实现IEnumerable的任何对象时,我试图让它返回true.我试过了IsAssignableFrom还有IsInstanceOfType,但似乎都不起作用。自从我取消注释方法的第二行以显式检查名称“Ch

c# - .NET:如何检查泛型类中的类型?

如何在类中获取泛型类的类型?一个例子:我构建了一个实现ICollection的通用类型化集合。在我里面有像这样的方法publicvoidAdd(Titem){...}publicvoidAdd(IEnumerableenumItems){...}如何在方法中请求给定类型T?我的问题的原因是:如果object用作T集合使用Add(objectitem)而不是Add(IEnumerableenumItems)即使参数是IEnumerable。因此,在第一种情况下,它将整个可枚举集合添加为一个对象,而不是可枚举集合的多个对象。所以我需要类似的东西if(Tisobject){//Checkfo

c# - 在 null IEnumerables 上为 Count() 返回零

我已经厌倦了使用这样的代码:varcount=0;if(myEnumerable!=null){count=myEnumerable.Count();}这有点迂腐:varcount=(myEnumerable??newstring[0]).Count();有没有更简洁的方法来做到这一点?我曾经在IEnumerable上有一个(名字不好的)PhantomCount扩展方法,它使用了我的第一个代码示例,但它有一些味道(除了名字之外)。 最佳答案 问题实际上出在创建这些可枚举对象的任何方面。除非你有充分的理由,否则任何生成可迭代集合的东西

c# - 确保 IEnumerable 不为空的契约(Contract)

给定的代码staticpublicintQ(){returnEnumerable.Range(0,100).Select(i=>i).First();}发出以下警告:warning:CodeContracts:requiresunproven:Any(source)如果我删除.Select()子句,它就会消失。但我不清楚我到底需要什么.Ensure才能满足cccheck。 最佳答案 你能用这段代码避免警告吗?varres=Enumerable.Range(0,100).Select(i=>i).Take(1);//executeon