Tag: ienumerable

为什么IEnumerable .Select()在2种情况中有1种工作? 无法从使用中推断出来

我收到此错误消息: The type arguments for method ‘System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerable, System.Func)’ cannot be inferred from the usage. Try specifying the type arguments explicitly. 第一种方法使用IEnumerable.Select()没有问题? 第二种方法的问题在哪里? private void GetPupilsForSchoolclass() { ObservableCollection pupilsOC = new ObservableCollection ( _adminRepo.GetPupilsBySchoolclassId(_selectedSchoolclass.SchoolclassId).Select(p => new PupilViewModel(p, _adminRepo)) ); SelectedSchoolclass.PupilListViewModel = pupilsOC; } private void GetDocumentsForPupil() { ObservableCollection documentsOC = new ObservableCollection(); IEnumerable documents = _docRepo.GetDocumentsByPupilId(_selectedPupil.Id); […]

Dictionary初始化中KeyNotFoundException的原因

以下代码 new Dictionary<string, List> { [“a”] = {1}, }; 抛出一个运行时KeyNotFoundException ,虽然{1}是一个格式完美的数组(即int[] a = {1,2,3,4}是有效代码)。 将Dictionary的TValue更改为int[] ,抛出编译时CS1061 ,但这不会(注意添加的new[]数组分配): new Dictionary<string, IEnumerable> { [“a”] = new[]{1}, }; 为什么会这样?

多个IEnumerable实现悖论

我有一个generics类A < T >,它实现了IEnumerable < T [] >。 我想有一个方便包装器B,它inheritance自A < char >并实现IEnumerable < string >。 public class A : IEnumerable { public IEnumerator GetEnumerator() { return Enumerate().GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } protected IEnumerable Enumerate() { throw new System.NotImplementedException(); } } public class B : A, IEnumerable { public IEnumerator GetEnumerator() { return […]

C#:是否可以返回IOrderedEnumerable ?

是否可以在IEnumerable上不使用OrderBy或OrderByDescending方法从方法返回IOrderedEnumerable IEnumerable ? 我猜也许不是……但……也许我错了? 理由:主要是好奇心。 在回答一个数字中的数字时, 这对我有点打击。 并且我的方法将按照给定数字中的权重按升序返回数字。 所以我认为如果它们以框架能够识别为有序的方式排序出来可能会很好。 当然,我们可以争辩说,从共同的数字观点来看,它们并没有被命令。 但是,如果他们应该或不应该在这里不是重点。 只要它有可能。 如果IOrderedEnumerable不仅仅是具有不同名称的IEnumerable ,我想我也有点暗示一个问题(或者现在至少)。 它还包含更多内容吗? 我知道它有ThenBy和ThenByDescending方法,但它们是否使用IOrderedEnumerable任何内容,或者它只是在IEnumerable上直接使用它们没有意义?

使用自定义流(IEnumerable )

我正在使用Stream的自定义实现,它将IEnumerable流式传输到流中。 我正在使用此EnumerableStream实现来执行转换。 我正在使用它在流模式下通过WCF执行流式传输。 我能够将IEnumerable转换为流而没有问题。 有一次,我在客户端,我可以反序列化并获取所有数据,但是我无法找到停止在我的流上循环的条件。 我越来越: System.Runtime.Serialization.SerializationException:解析完成之前遇到的Stream of Stream。 这是我想要实现的示例: class Program { public static void Main() { var ListToSend = new List<List>(); var ListToReceive = new List<List>(); ListToSend = SimulateData().ToList(); using (Stream stream = GetStream(ListToSend)) { var formatter = new BinaryFormatter(); while (stream.CanRead || 1 == 1 || true…) // What should I put […]

使用Parallel.ForEach()获得yield返回的线程安全性

请考虑以下代码示例,该示例创建可枚举的整数集合并并行处理它: using System.Collections.Generic; using System.Threading.Tasks; public class Program { public static void Main() { Parallel.ForEach(CreateItems(100), item => ProcessItem(item)); } private static IEnumerable CreateItems(int count) { for (int i = 0; i < count; i++) { yield return i; } } private static void ProcessItem(int item) { // Do something } } 是否保证Parallel.ForEach()生成的工作线程每个都获得一个不同的项目,或者是一些围绕增量和返回所需的锁定机制?

如何创建单例IEnumerable?

C#是否提供了一种很好的方法来将类型T的单个实体IEnumerable为IEnumerable ? 我能想到的唯一方法是: T entity = new T(); IEnumerable = new List { entity }.AsEnumerable(); 我想应该有更好的方法。

DataTables vs IEnumerable

我正和另一位与我合作的程序员进行辩论。 对于数据库返回类型,是否有任何重要的内存使用或性能差异,或其他缺点应该使某人避免使用DataSets和DataTables并支持实现IEnumerable类型…反之亦然 我更喜欢返回实现IEnumerable ( List, T[] etc )的类型,因为它更轻量级,在访问属性时对对象强类型,允许有关底层类型的更丰富信息等。它们需要更多时间设置虽然手动使用数据读取器。 这些日子使用DataTables的唯一理由就是懒惰吗?

如果我可以定义一个GetEnumerator,为什么要实现IEnumerable(T)?

更新 :我感谢所有的评论,这些评论基本上都是一致的反对意见。 虽然提出的每一项反对意见都是有效的,但我觉得棺材中的最终指甲是Ani的敏锐观察 ,最终,即使是这个想法表面上提供的一个 微不足道的好处 – 消除样板代码 – 也被这个事实所否定。想法本身需要自己的样板代码。 所以,是的,请相信我说:这将是一个坏主意。 而且只是为了有点挽救我的尊严:我可能是为了争论而玩弄它,但我从来没有真正以这个想法开始出售 – 只是好奇地听到其他人不得不说的话。 诚实。 在你将这个问题视为荒谬之前,我请你考虑以下问题: IEnumerableinheritance自* IEnumerable ,这意味着任何实现IEnumerable通常必须实现IEnumerable.GetEnumerator 和 (显式) IEnumerable.GetEnumerator 。 这基本上等于样板代码。 只要该方法使用MoveNext方法和Current属性返回某种类型的对象,您就可以foreach处理具有GetEnumerator方法的任何类型。 因此,如果您的类型使用签名public IEnumerator GetEnumerator()定义一个方法,则使用foreach枚举它是合法的。 显然,有很多代码需要IEnumerable接口 – 例如,基本上所有的LINQ扩展方法。 幸运的是,使用C#通过yield关键字提供的自动迭代器生成,从可以使用的类型转换为IEnumerable是微不足道的。 所以,把这一切放在一起,我有这个疯狂的想法:如果我只是定义我自己的界面,如下所示: public interface IForEachable { IEnumerator GetEnumerator(); } 然后每当我定义一个我想要枚举的类型时,我实现这个接口而不是IEnumerable ,从而无需实现两个GetEnumerator方法(一个显式)。 例如: class NaturalNumbers : IForEachable { public IEnumerator GetEnumerator() { int i = 1; […]

使用Linq从IEnumerable 中提取并存储在数据表中

我有一个如下所示的数据表 public static DataTable SetColumnHeaders(DataTable KeyDataTable) { KeyDataTable.Columns.Add(“First_Name”, typeof(string)); KeyDataTable.Columns.Add(“Last_Name”, typeof(string)); KeyDataTable.Columns.Add(“Address1”, typeof(string)); KeyDataTable.Columns.Add(“Address2”, typeof(bool)); KeyDataTable.Columns.Add(“City”, typeof(string)); KeyDataTable.Columns.Add(“State”, typeof(bool)); KeyDataTable.Columns.Add(“Zip”, typeof(string)); KeyDataTable.Columns.Add(“Zip4”, typeof(bool)); KeyDataTable.Columns.Add(“Match_File”, typeof(bool)); return KeyDataTable; } 我的目标是从xml中读取信息并将该特定数据存储到我的数据表中。 我为每个“Quote”都有一个单独的xml文件,所以我将向数据表添加一个新行。 我关心的xml部分如下: ‘- – – – com.agencyport – NONE default 2006-04-04T15:44:00 en-US – Applied Systems WinTam 7.1.0 – 81913CB5-3EAB-F158-EE24-5910F9BE9C26 – 7B010E52-44F2-487A-521B-9D1E3500C23D – – AP TEST TEST […]