草庐IT

ienumerator

全部标签

c# - XML 到 IEnumerable<T>

有没有办法获取给定的XML文件并将其转换(最好使用C#泛型)为T的具体可枚举列表,其中T是我的具体类例如,我可能有一个XML文件,如1apple2orange我想查看一个水果对象列表它具有如下属性publicclassFruit:IFruit{publicstringname;publicintid;}如果我要使用泛型,我假设我需要某种映射,因为我希望它能理想地用于IFruit接口(interface)(不确定是否可能)提前致谢 最佳答案 给定以下类型:publicinterfaceIFruit{Stringname{get;set

c# - Linq to Xml : selecting elements if an attribute value equals a node value in an IEnumerable<XElement>

我创建了一个IEnumerable对象,它只包含我想要从xml文件中获取的节点:IEnumerablerosters=XDocument.Load("roster.xml").Elements("rosterlist").Elements("roster").Where(w=>w.Element("division").Value.Equals("SUPERAWESOMEDIVISION"));所以它是这些的集合:12我只想抓取userid属性也是rosters集合中的userid节点的用户。IEnumerableusers=XDocument.Load("user.xml").Ele

c# - 从 IEnumerable 中的任意点访问一系列元素

我有这个方法:privateIEnumerableReadTransactions(stringfile_name){using(varreader=XmlReader.Create(file_name+".xml")){while(reader.ReadToFollowing("transaction","urn:namepsaceUri")){using(varsubtree=reader.ReadSubtree()){yieldreturnXElement.Load(subtree);}}}}此方法从XML文件中读取。但是,我不需要同时使用XML文件中的所有节点。我想一次给他们十

c# - 无法使用集合初始值设定项实现类型 XYZ,因为它不实现 'System.Collections.IEnumerable'

我有以下类(class):publicclassCommentList{stringItemType;stringComment1;stringStatus1;stringDiscussionBoardId;GuidCourseId;GuidCommentID;}我正在尝试执行以下LINQ语句:Listquery=fromcindb.Commentsjoinsindb.Statusonc.StatusIdequalss.StatusIdjoindindb.DiscussionBoardsonc.DiscussionBoardIdequalsd.DiscussionBoardIdwher

c# - 通过覆盖链的 IEnumerable 列表

好吧,很难为这个问题说出一个确切的标题,但这里是......我有一个名为Block的抽象类,它看起来像这样:publicabstractclassBlock{publicboolEnabled{get;privateset;}publicvirtualIEnumerable>GetDefaultUsages(){yieldreturnnewKeyValuePair("Enabled","true");}}然后说我有一个子类:publicclassForm:Block{publicstringKey{get;privateset;}publicoverrideIEnumerable>Ge

c# - IEnumerable<IMyInterface> 隐式来自 Class[] 但不是来自 Struct[]。为什么?

给定:publicinterfaceIMyInterface{}publicclassMyClass:IMyInterface{publicMyClass(){}}publicstructMyStruct:IMyInterface{privateint_myField;publicMyStruct(intmyField){_myField=myField;}}为什么我可以写:IEnumerablemyClassImps=new[]{newMyClass(),newMyClass(),newMyClass()};但不是:IEnumerablemyStructImps=new[]{newM

c# - 使用 IReadOnlyCollection<T> 而不是 IEnumerable<T> 作为参数以避免可能的多重枚举

我的问题与thisone有关关于IEnumerable的使用对比IReadOnlyCollection.我也一直使用IEnumerable将集合公开为返回类型和参数,因为它受益于不可变和延迟执行。但是,我越来越担心我的代码中必须枚举参数以避免ReSharper可能给出的多重枚举警告的地方的激增。我理解ReSharper为什么建议这样做,并且我同意它建议的代码(如下)以确保封装(即,不假设调用者)。Foo[]arr=colasFoo[]??col.ToArray();但是,我发现此代码的重复性具有污染性,并且我同意一些消息来源的观点IReadOnlyCollection是一个更好的选择,

c# - 包装一个 IEnumerable 并捕获异常

我有一堆类可以Process()对象,并返回它们自己的对象:publicoverrideIEnumerableProcess(IEnumerableincoming){...}我想编写一个处理器类来包装这些处理​​器之一,并记录包装的Process()方法可能抛出的任何未捕获的异常。我的第一个想法是这样的:publicoverrideIEnumerableProcess(IEnumerableincoming){try{foreach(varxinthis.processor.Process(incoming)){yieldreturnx;}}catch(Exceptione){Wri

c# - 如何定义接受任何生成 IEnumerable<T> 的任务的函数?

我正在寻找一个函数来接受任何产生IEnumerable的任务.为了说明,请考虑以下函数签名。voidDoWork(Task>task){}现在,我想按如下方式调用此方法:Tasktask=Task.FromResult(new[]{1,2,3});DoWork(task);显然,这行不通,因为两个Task类型不相同,并且任务不存在协方差。但是,我想知道是否有一些聪明的技巧可以让它发挥作用,灵感来自以下示例。asyncTask>GetTask(){returnawaitTask.FromResult(newint[]{1,2,3});}在这里,await正在使用内联任务的结果有效地创建一

c# - 泛型方法以不同于泛型类型的方式处理 IEnumerable

请检查以下代码段:publicinterfaceICountable{}publicclassCounterwhereT:ICountable{publicintCount(IEnumerableitems){return0;}publicintCount(TItem){return0;}}publicclassCounter{publicintCount(IEnumerableitems)whereT:ICountable{return0;}publicintCount(TItem)whereT:ICountable{return0;}}Counter的两个版本仅在泛型参数的规范上有