Questions tagged «ienumerable»

IEnumerable及其通用的IEnumerable <T>是.NET接口,用于迭代(或枚举)项目集合。



12
如何获取IEnumerable中元素的索引?
我这样写: public static class EnumerableExtensions { public static int IndexOf&lt;T&gt;(this IEnumerable&lt;T&gt; obj, T value) { return obj .Select((a, i) =&gt; (a.Equals(value)) ? i : -1) .Max(); } public static int IndexOf&lt;T&gt;(this IEnumerable&lt;T&gt; obj, T value , IEqualityComparer&lt;T&gt; comparer) { return obj .Select((a, i) =&gt; (comparer.Equals(a, value)) ? i : -1) …
144 c#  .net  linq  ienumerable  indexof 

5
ReadOnlyCollection或IEnumerable用于公开成员集合?
如果调用代码仅对集合进行迭代,是否有任何理由将内部集合公开为ReadOnlyCollection而不是IEnumerable? class Bar { private ICollection&lt;Foo&gt; foos; // Which one is to be preferred? public IEnumerable&lt;Foo&gt; Foos { ... } public ReadOnlyCollection&lt;Foo&gt; Foos { ... } } // Calling code: foreach (var f in bar.Foos) DoSomething(f); 如我所见,IEnumerable是ReadOnlyCollection接口的子集,它不允许用户修改集合。因此,如果IEnumberable接口足够了,那就可以使用它。这是推理的正确方法,还是我错过了一些东西? 谢谢/ Erik

3
为什么此字符串扩展方法不引发异常?
我有一个C#字符串扩展方法,该方法应返回IEnumerable&lt;int&gt;字符串中子字符串的所有索引中的一个。它可以完美地实现其预期目的,并且可以返回预期的结果(由我的一个测试证明,虽然不是以下测试),但是另一个单元测试发现了一个问题:它无法处理空参数。 这是我正在测试的扩展方法: public static IEnumerable&lt;int&gt; AllIndexesOf(this string str, string searchText) { if (searchText == null) { throw new ArgumentNullException("searchText"); } for (int index = 0; ; index += searchText.Length) { index = str.IndexOf(searchText, index); if (index == -1) break; yield return index; } } 这是检测出该问题的测试: [TestMethod] [ExpectedException(typeof(ArgumentNullException))] public void Extensions_AllIndexesOf_HandlesNullArguments() …

4
实体框架中的ICollection <T>与List <T>
在开始设计一些Entity Framework应用程序之前,我仅观看了一些网络广播。我确实没有读那么多文档,所以我现在为此感到痛苦。 我List&lt;T&gt;在课堂上一直在使用,效果很好。 现在,我已经阅读了一些文档,并指出我应该一直在使用ICollection&lt;T&gt;。我改成了这个,它甚至没有引起模型上下文的改变。这是因为List&lt;T&gt;和ICollection&lt;T&gt;都继承了IEnumerable&lt;T&gt;,而这正是EF实际需要的吗? 但是,如果是这种情况,为什么EF文档没有声明它需要它IEnumerable&lt;T&gt;而不是ICollection&lt;T&gt;? 无论如何,我做过的事情有什么弊端,还是我应该改变它?

6
字典中元素的顺序
我的问题是关于枚举Dictionary元素 // Dictionary definition private Dictionary&lt;string, string&gt; _Dictionary = new Dictionary&lt;string, string&gt;(); // add values using add _Dictionary.Add("orange", "1"); _Dictionary.Add("apple", "4"); _Dictionary.Add("cucumber", "6"); // add values using [] _Dictionary["banana"] = 7; _Dictionary["pineapple"] = 7; // Now lets see how elements are returned by IEnumerator foreach (KeyValuePair&lt;string, string&gt; kvp in _Dictionary) …

5
AsQueryable()的目的是什么?
这样做的目的AsQueryable()仅仅是为了让您可以传递IEnumerable可能期望的方法IQueryable,还是有一个有用的理由表示IEnumerable为IQueryable?例如,是否应该针对以下情况: IEnumerable&lt;Order&gt; orders = orderRepo.GetAll(); // I don't want to create another method that works on IEnumerable, // so I convert it here. CountOrders(orders.AsQueryable()); public static int CountOrders(IQueryable&lt;Order&gt; ordersQuery) { return ordersQuery.Count(); } 还是实际上使它做了一些不同的事情: IEnumerable&lt;Order&gt; orders = orderRepo.GetAll(); IQueryable&lt;Order&gt; ordersQuery = orders.AsQueryable(); IEnumerable&lt;Order&gt; filteredOrders = orders.Where(o =&gt; o.CustomerId == 3); …


8
检查一个IEnumerable是否包含另一个IEnumerable的所有元素
比较两个集合中每个元素的字段/属性时,确定一个IEnumerable是否包含另一个IEnumerable的所有元素的最快方法是什么? public class Item { public string Value; public Item(string value) { Value = value; } } //example usage Item[] List1 = {new Item("1"),new Item("a")}; Item[] List2 = {new Item("a"),new Item("b"),new Item("c"),new Item("1")}; bool Contains(IEnumerable&lt;Item&gt; list1, IEnumerable&lt;Item&gt;, list2) { var list1Values = list1.Select(item =&gt; item.Value); var list2Values = list2.Select(item =&gt; …
102 c#  .net  linq  ienumerable 


14
我应该总是返回IEnumerable <T>而不是IList <T>吗?
当我编写自己的DAL或返回一组项目的其他代码时,我应该始终执行return语句: public IEnumerable&lt;FooBar&gt; GetRecentItems() 要么 public IList&lt;FooBar&gt; GetRecentItems() 当前,在我的代码中,我一直在尝试尽可能多地使用IEnumerable,但是我不确定这是否是最佳实践吗?这似乎是正确的,因为我在返回最通用的数据类型的同时仍对其功能进行了描述,但这也许是不正确的。
97 c#  ienumerable 



10
没有类型为“ IEnumerable <SelectListItem>”的具有键“ xxx”的ViewData项目
关于Stack Overflow的文章有几篇,但没有一个答案似乎可以解决我目前的问题。 我有一个带有表格的页面,每一行都有许多文本字段和一个下拉列表。所有下拉菜单都需要使用相同的SelectList数据,因此我将其设置如下: 控制者 ViewData["Submarkets"] = new SelectList(submarketRep.AllOrdered(), "id", "name"); 视图 &lt;%= Html.DropDownList("submarket_0", (SelectList)ViewData["Submarkets"], "(none)") %&gt; 我已经在很多地方使用了此设置,但是由于某种原因,在此特定视图中我得到了错误: 没有类型为“ IEnumerable”的ViewData项目具有键“ submarket_0”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.