Tag: ienumerable

是否可以在C#中扩展数组?

我习惯于向IEnumerable等外部类添加方法。 但是我们可以在C#中扩展数组吗? 我打算为数组添加一个方法,即使它是多维的,也可以将它转换为IEnumerable。 与如何在C#中扩展数组无关

我如何实现IEnumerable?

我有一个包含静态对象数的类。 需要经常将此类与其他将成为简单List对象的类进行“比较”。 public partial class Sheet { public Item X{ get; set; } public Item Y{ get; set; } public Item Z{ get; set; } } 这些项目显然不会是“X”“Y”“Z”,这些只是通用名称。 问题在于,由于需要做的事情的性质,列表不起作用; 即使这里的所有东西都是Item类型。 它就像一个非常具体的事项清单,必须在代码和运行时进行测试。 这一切都很好,很好; 这不是我的问题。 我的问题是迭代它。 例如,我想做以下事情…… List UncheckedItems = // Repository Logic Here. UncheckedItems包含所有可用项目; CheckedItems是Sheet类实例。 CheckedItems将包含从Unchecked移动到Checked的项目; 但是由于存储系统的性质,移动到“已检查”的项目无法从“未选中”中删除。 我只想迭代“已检查”并从“已检查”中的已取消选中的列表中删除任何内容。 所以很自然地,这将是一个普通的列表。 foreach(Item item in Unchecked) { if( Checked.Contains(item) ) […]

添加到IEnumerable的代码

我有一个像这样的调查员 IEnumerable page; 如何添加页面(例如:D:\ newfile.txt)? 我试过Add , Append , Concat等但是没有什么对我Concat 。

MVC:Dictionary需要一个类型为’System.Collections.Generic.IEnumerable`1的模型项

我收到此错误,我不确定我是否能够这样做,这是我的代码.. 应用控制器 public ActionResult AppView() { List apps; using (ISiteDbContext context = _resolver.GetService()) { apps = context.Applications.ToList(); } return PartialView(“AppView”, apps.OrderBy(a => a.Name).ToList()); } 渲染部分 – 这是在家庭控制器中的视图内。 @{Html.RenderPartial(“~/Views/Application/AppView.cshtml”, new Example.Services.DAL.Application());} 和我的应用程序视图 @model IEnumerable @{ ViewBag.Title = “Applications”; } Applications @Html.ActionLink(“Add New Application”, “Create”) @Html.DisplayNameFor(model => model.Name) @foreach (var item in Model) { @Html.DisplayFor(modelItem => item.Name) […]

IEqualityComparer和Contains方法

我有这个简单的类与2个枚举字段,我试图在集合( List )中找到此对象的一个​​项目但是Contains方法无法正常工作 public class Calculator : IEqualityComparer { public DashboardsComputationMode ComputationMode { get; set; } public Modes Mode { get; set; } public Calculator(DashboardsComputationMode dashboardsComputationMode, Modes mode) { ComputationMode = dashboardsComputationMode; Mode = mode; } public bool Equals(Calculator x, Calculator y) { return (x.ComputationMode.Equals(y.ComputationMode) && x.Mode.Equals(y.Mode)); } public int GetHashCode(Calculator obj) { return obj.ComputationMode.GetHashCode() […]

Enumerable.Intersperse的扩展方法?

我从Haskell学到了散布函数 ,并一直在寻找c#中的实现。 Intersperse有2个参数,一个IEnumerable 源和一个T元素。 它返回一个IEnumerable,其中元素插入源的每个元素之间。 一种可能的用例是在整数列表之间放置一个任意整数,例如: // returns: {1, 0, 2, 0, 3} (List() {1, 2, 3}).Intersperse(0); 这是string.Join(…)的一般情况。

我如何组织一个可枚举的?

我需要一个优雅的方法,它接受一个可枚举的,并获得可枚举的枚举,每个元素中包含相同数量的元素,但最后一个: public static IEnumerable<IEnumerable> Chunk(this IEnumerable values, Int32 chunkSize) { // TODO: code that chunks } 这是我尝试过的: public static IEnumerable<IEnumerable> Chunk(this IEnumerable values, Int32 chunkSize) { var count = values.Count(); var numberOfFullChunks = count / chunkSize; var lastChunkSize = count % chunkSize; for (var chunkIndex = 0; chunkSize 0) { yield return values.Skip(chunkSize * count).Take(lastChunkSize); […]

将yield转换为VB.NET

首先,我必须假设我不熟悉C#yield关键字及其function。 将它“翻译”成VB.NET的最佳/最简单方法是什么? 特别是我试图将此代码转换为VB.NET,但我失败了: yield return new MatchNode(++index, current.Value); 我拥有的是: Imports System.Collections Imports System.Data.SqlTypes Imports System.Diagnostics.CodeAnalysis Imports System.Text.RegularExpressions Imports Microsoft.SqlServer.Server Class MatchNode Private _index As Integer Private _value As String Public Sub New(ByVal index As Integer, ByVal value As String) _index = index _value = value End Sub Public ReadOnly Property Index() As Integer Get Return […]

当foreach迭代时,无法在集合中添加/删除项目

如果我自己实现IEnumerator接口,那么我能够(在foreach语句中)添加或删除albumsList中的项而不生成exception。但是如果foreach语句使用了albumsList提供的IEnumerator ,那么尝试添加/删除(内部)来自albumsList的foreach项将导致exception: class Program { static void Main(string[] args) { string[] rockAlbums = { “rock”, “roll”, “rain dogs” }; ArrayList albumsList = new ArrayList(rockAlbums); AlbumsCollection ac = new AlbumsCollection(albumsList); foreach (string item in ac) { Console.WriteLine(item); albumsList.Remove(item); //works } foreach (string item in albumsList) { albumsList.Remove(item); //exception } } class MyEnumerator : IEnumerator { ArrayList […]

返回IEnumerable时是否有理由不使用’yield return’?

简单的例子 – 你有一个返回IEnumerable的方法或属性,调用者在foreach()循环中迭代它。 你应该总是在你的IEnumerable方法中使用’yield return’吗? 有没有理由不去? 虽然我知道它可能并不总是有必要,甚至“更好”(例如,它可能是一个非常小的集合),是否有理由主动避免这样做? 让我思考这个问题的代码是我写的一个函数非常类似于这个post中接受的答案 – 我如何遍历日期范围?