草庐IT

ienumerable

全部标签

c# - IList<T> 与 IEnumerable<T>。 IList<T> 或 IEnumerable<T> 哪个更有效

使方法返回IList的更有效方法是什么?或IEnumerable?IEnumerable它是不可变的集合,但是IList可变并包含许多有用的方法和属性。投IList至IEnumerable它只是引用副本:IListl=newList();IEnumerablee=l;投IEnumerable至List我们需要迭代每个元素或调用ToList()方法:IEnumerable.ToList();或者可以通过IEnumerable至List在其构造函数中某处执行相同迭代的构造函数。Listl=newList(e);您认为哪种情况效率更高?您在实践中更喜欢哪个? 最佳

c# - XDocument + IEnumerable 导致 System.Xml.Linq.dll 内存不足异常

基本上我有一个程序,当它开始时加载一个文件列表(如FileInfo),并为列表中的每个文件加载一个XML文档(如XDocument).程序然后从其中读取数据到容器类(存储为IEnumerables),此时XDocument超出范围。程序然后将数据从容器类导出到数据库。然而,在导出容器类超出范围后,垃圾收集器并未清理容器类,因为它存储为IEnumerable,似乎导致了XDocument留在内存中(不确定这是否是原因,但任务管理器显示XDocument中的内存未被释放)。由于程序循环遍历多个文件,最终程序抛出内存不足异常。为了缓解这种情况,我最终使用了System.GC.Collect(

c# - 在List<T>中选择整周没有休息日的记录 - C#

我有一个定义如下的Employee类:Employee{publicintId{get;set;}publicstringName{get;set;}publicDateTimeWorkDate{get;set;}publicboolisOff{get;set;}}这是我的类实现和用法:Listworkers=newList(){newEmployee{Id=1,Name="Emp1",WorkDate=Convert.ToDateTime("4/11/2016"),IsOff=false},newEmployee{Id=1,Name="Emp1",WorkDate=Convert.T

c# - 创建 n*m 值的所有组合

假设我有一个数据结构IEnumerable>像这样:{{A,B}{1,2,3}{Z}}其中外部数组可以包含任意数量的内部数组。并且每个内部数组都可以独立包含任意数量的元素。为了简单起见,假设没有数组是空的。我想将其转换为IEnumerable>像这样:{{A,1,Z},{A,2,Z},{A,3,Z},{B,1,Z},{B,2,Z},{B,3,Z}}其中包含原始结构中值的每个组合。因此,每个内部数组中的每个元素都按索引映射到原始外部数组中的元素/数组。在C#中执行此操作的最简单方法是什么? 最佳答案 为此,您可以使用EricLippe

C# - 如何在类上实现 IEnumerator

如何在此类上实现IEnumerator以便我可以在foreach循环中使用它。publicclassItems{privateDictionary_items=newDictionary();publicConfigurationthis[stringelement]{get{if(_items.ContainsKey(element)){return_items[element];}else{returnnull;}}set{_items[element]=value;}}}在此示例中,Configuration是一个具有少量属性的简单类。 最佳答案

c# - Nerd Dinner 教程中 C# yield 关键字的有趣用法

在完成教程(专业ASP.NETMVC-Nerd晚餐)时,我遇到了这段代码:publicIEnumerableGetRuleViolations(){if(String.IsNullOrEmpty(Title))yieldreturnnewRuleViolation("Titlerequired","Title");if(String.IsNullOrEmpty(Description))yieldreturnnewRuleViolation("Descriptionrequired","Description");if(String.IsNullOrEmpty(HostedBy))yi

c# - IEnumerable.Select() 可以跳过一个项目吗?

我有这个功能:publicIEnumerableEnumPrograms(){returndev.AudioSessionManager2.Sessions.AsEnumerable().Where(s=>s.GetProcessID!=0).Select(s=>{try{returnProcess.GetProcessById((int)s.GetProcessID).ProcessName;}catch(ArgumentException){returnnull;}});}try..catch是必需的,因为可能存在具有不再存在的PID的session。我想跳过它们。有没有办法从Se

c# - 如果 yield return 从未发生,是否返回 null?

该方法通过yieldreturn语句返回IEnumerable。如果yield语句从未发生(它在条件逻辑中),该方法会返回null,还是会返回一个计数为0的Enumerable? 最佳答案 一个有效的IEnumerable,当您遍历它时不产生任何值。试想一下:您可以将IEnumerable生成器存储在一个变量中-代码本身只会在您实际遍历结果时执行。如果您有null,您如何执行代码?或者您如何知道该函数在不运行的情况下不会产生任何结果。 关于c#-如果yieldreturn从未发生,是否返

c# - 如何将 IEnumerable<T> 添加到现有的 ICollection<T>

给定一个现有的ICollection实例(例如dest)从IEnumerable添加项目的最有效和可读的方法是什么?在我的用例中,我有某种实用方法Collect(IEnumerableitems)它返回一个新的ICollection来自items的元素,所以我按以下方式进行:publicstaticICollectionCollect(IEnumerableitems)whereT:ICollection{...ICollectiondest=Activator.CreateInstance();items.Aggregate(dest,(acc,item)=>{acc.Add(ite

c# - 如何编写通用 IEnumerable<SelectListItem> 扩展方法

我对泛型相当陌生(好吧,真的很陌生),但我喜欢它们的想法。我将在一个View上有几个下拉列表,我想要一种通用的方法来获取对象列表并将其转换为SelectListItems列表我现在拥有的:publicstaticIEnumerableToSelectListItems(thisIEnumerableitems,longselectedId){returnitems.OrderBy(item=>item.Name).Select(item=>newSelectListItem{Selected=(item.Id==selectedId),Text=item.Name,Value=item