Tag: ienumerable

C#IEnumerable to string

出于日志记录的目的,我想调用object []数组上每个对象的.ToString()方法。 我怎样才能以最简单的方式做到这一点? 说我有: myArray = new Object[]{“astring”,1, Customer} Log(????); 我怎样才能传递一个字符串,例如它的值等于: “astring”.ToString()+1.ToString()+Customer.ToString() 或者更好,每个值之间使用逗号。

分配IEnumerable(协方差)

由于IEnumerable在C#4.0中有一个协变参数,我很困惑它在以下代码中的行为方式。 public class Test { IEnumerable foos; public void DoTestOne(IEnumerable bars) where H : IFoo { foos = bars; } public void DoTestTwo(IEnumerable bars) { foos = bars; } } public interface IFoo { } public interface IBar : IFoo { } 所以基本上DoTestOne方法不会在DoTestTwo编译。 除了为什么它不起作用,如果有人知道我如何能够实现DoTestOne的效果(指定一个IEnumberable where H : IFoo到IEnumberable ),我将不胜感激。

路径中的非法字符。 使用Skip并使用IEnumerable时出错

嗨,我的控制器中有以下操作 [AcceptVerbs(HttpVerbs.Post)] public ActionResult Index() { IEnumerable myresult = filterData(); totalCount = myresult.Count(); ViewBag.totalCount = totalCount; //myresult = myresult.Skip(100 * pageIndex).Take(100); return View(myresult); } 这是我的看法 @model IEnumerable @{ ViewBag.Title = “Survey Results”; } @using (Html.BeginForm()) { DEL … @Html.DisplayFor(x => x, new { pageIndex = ViewBag.index }) } 我对SurveyResult有一个局部视图,但我不包括它,因为我认为它不相关。 这是我的问题。 上面的代码工作正常,但只要我取消注释以下行 myresult = myresult.Skip(100 * […]

将带有List的字典转换为IEnumerable

我有一本字典: Dictionary<String, List> test = new Dictionary<String, List>(); 然后我填充这个字典,因此我需要列表,所以我可以调用Add()。 我的问题是函数需要返回: Dictionary<String, IEnumerable> 有没有简单的方法可以做到这一点,而不是通过我的原始字典和手动循环显而易见的循环?

使用List 而不是IEnumerable 有什么好处?

或者反过来? 我一直使用通用列表。 但我偶尔也会听到有关IEnumerables的消息,而且老实说我(今天)不知道它们是什么以及我为什么要使用它们。 所以,冒着在网上有东西永远更多地宣扬我的无知的风险,我谦卑地发布这个问题。

C#IEnumerable打印出来

我遇到了一个数组的问题,例如我想在列表中打印出奇数。 int[] numbers = new int[]{ 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; Console.WriteLine(numbers.Where(n => n % 2 == 1).ToArray()); ToString方法似乎不起作用? 我不想循环遍历这些元素。 我能做什么?

将C#集合拆分为相等的部分,保持排序

我正在尝试将一个集合拆分成多个集合,同时保持我对集合的排序。 我尝试使用以下扩展方法,但它错误地打破了它们。 基本上,如果我要查看集合中的项目,与加入的分解集合相比,顺序应该相同。 这是我使用的代码不起作用: public static IEnumerable<IEnumerable> Split(this IEnumerable list, int parts) { int i = 0; var splits = from name in list group name by i++ % parts into part select part.AsEnumerable(); return splits; } int parts =子枚举数

将类型为T的数组转换为类型I的数组,其中T在C#中实现I

我试图在C#中完成一些我在Java中轻松完成的事情。 但有点麻烦。 我有一个未定义数量的T类型的对象数组.A实现了一个接口I.我需要一个I的数组,它是所有数组中所有值的总和。 假设没有数组将包含相同的值。 这个Java代码有效。 ArrayList list = new ArrayList(); for (Iterator iterator = arrays.iterator(); iterator.hasNext();) { T[] arrayOfA = iterator.next(); //Works like a charm list.addAll(Arrays.asList(arrayOfA)); } return list.toArray(new T[list.size()]); 但是这个C#代码没有: List list = new List(); foreach (T[] arrayOfA in arrays) { //Problem with this list.AddRange(new List(arrayOfA)); //Also doesn’t work list.AddRange(new List(arrayOfA)); } return list.ToArray(); […]

Enumerable.Range和内存分配

我有以下代码: IEnumerable elements = Enumerable.Range(1, Int32.MaxValue); Console.WriteLine(“Size of System.Int32: {0}”, sizeof(int)); Console.Write(“Iterating over {0} elements… “, elements.Count()); Parallel.ForEach(elements, _ => { }); Console.WriteLine(“Done.”); 打印出: > Size of System.Int32: 4 > Iterating over 2147483647 elements… Done. 但是,我不明白为什么这不会抛出OutOfMemoryException 。 知道每个int值占用4个字节的空间,分配Int32.MaxValue int数量应该占用~8GB 检查我的申请,这个过程正在采取行动。 ~5.200KB。 元素正在成功迭代,因此必须在某处分配,对吧? LINQ如何实现这一目标?

计算IOrderedEnumerable而不使用它

我想做什么,短版: var source = new[]{2,4,6,1,9}.OrderBy(x=>x); int count = source.Count; // <– get the number of elements without performing the sort 长版: 要确定IEnumerable中元素的数量,必须迭代所有元素。 这可能是一项非常昂贵的操作。 如果可以将IEnumerable转换为ICollection ,则可以快速确定计数而无需迭代。 LINQ Count()方法自动执行此操作。 函数myEnumerable.OrderBy()返回一个IOrderedEnumerable 。 IOrderedEnumerable显然不能转换为ICollection ,因此调用Count()将消耗整个事物。 但排序不会改变元素的数量,并且IOrderedEnumerable必须保持对其源的引用。 因此,如果该源是ICollection ,则应该可以从IOrderedEnumerable中确定计数而不消耗它。 我的目标是有一个库方法,它接受带有n个元素的IEnumerable ,然后例如检索位置为n / 2的元素; 我想避免迭代IEnumerable两次只是为了得到它的计数,但我也想避免创建一个不必要的副本,如果可能的话。 这是我想要创建的函数的框架 public void DoSomething(IEnumerable source) { int count; // What we do with the source depends […]