คำถามติดแท็ก ienumerable

IEnumerable และ IEnumerable คู่กันทั่วไปคืออินเทอร์เฟซ. NET สำหรับการวนซ้ำ (หรือการแจกแจง) ผ่านคอลเลกชันของไอเท็ม

7
ความแตกต่างระหว่าง IQueryable กับ IEnumerable คืออะไร
ฉันสับสนกับความแตกต่าง ค่อนข้างใหม่สำหรับ. Net ฉันรู้ว่าฉันสามารถสืบค้นIEnumerablesโดยใช้ส่วนขยาย Linq แล้วนี่คืออะไรIQueryableและมันแตกต่างกันอย่างไร ดูเพิ่มเติมความแตกต่างระหว่าง IQueryable [T] และ IEnumerable [T] คืออะไร? ที่ทับซ้อนกับคำถามนี้


12
วิธีรับดัชนีขององค์ประกอบใน IEnumerable?
ฉันเขียนสิ่งนี้: public static class EnumerableExtensions { public static int IndexOf<T>(this IEnumerable<T> obj, T value) { return obj .Select((a, i) => (a.Equals(value)) ? i : -1) .Max(); } public static int IndexOf<T>(this IEnumerable<T> obj, T value , IEqualityComparer<T> comparer) { return obj .Select((a, i) => (comparer.Equals(a, value)) ? i : -1) …
144 c#  .net  linq  ienumerable  indexof 

5
ReadOnlyCollection หรือ IEnumerable สำหรับการเปิดเผยคอลเลกชันของสมาชิก?
มีเหตุผลใดหรือไม่ที่จะเปิดเผยคอลเลกชันภายในเป็น ReadOnlyCollection แทนที่จะเป็น IEnumerable หากรหัสการโทรวนซ้ำบนคอลเลกชันเท่านั้น class Bar { private ICollection<Foo> foos; // Which one is to be preferred? public IEnumerable<Foo> Foos { ... } public ReadOnlyCollection<Foo> Foos { ... } } // Calling code: foreach (var f in bar.Foos) DoSomething(f); อย่างที่ฉันเห็น IEnumerable เป็นส่วนย่อยของอินเทอร์เฟซของ ReadOnlyCollection และไม่อนุญาตให้ผู้ใช้แก้ไขคอลเล็กชัน ดังนั้นหากอินเทอร์เฟซ IEnumberable เพียงพอนั่นคือสิ่งที่ต้องใช้ นั่นเป็นวิธีที่เหมาะสมในการหาเหตุผลเกี่ยวกับเรื่องนี้หรือฉันพลาดอะไรไป? ขอบคุณ …

3
เหตุใดวิธีการขยายสตริงนี้จึงไม่เกิดข้อยกเว้น
ฉันมีวิธีการขยายสตริง C # ที่ควรส่งคืนIEnumerable<int>ดัชนีทั้งหมดของสตริงย่อยภายในสตริง มันทำงานได้อย่างสมบูรณ์ตามวัตถุประสงค์ที่ตั้งใจไว้และผลลัพธ์ที่คาดหวังจะถูกส่งกลับ (ตามที่ได้รับการพิสูจน์โดยหนึ่งในการทดสอบของฉันแม้ว่าจะไม่ใช่แบบทดสอบด้านล่างก็ตาม) แต่การทดสอบหน่วยอื่นพบปัญหา: ไม่สามารถจัดการอาร์กิวเมนต์ว่างได้ นี่คือวิธีการขยายที่ฉันกำลังทดสอบ: public static IEnumerable<int> 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; } …

4
ICollection <T> Vs List <T> ใน Entity Framework
ฉันดูเว็บคาสต์เพียงไม่กี่รายการก่อนที่จะเริ่มออกแบบแอปพลิเคชัน 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;? ไม่ว่าในกรณีใดมีข้อเสียของสิ่งที่ฉันทำหรือฉันควรเปลี่ยนแปลงหรือไม่?

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 == …

6
ลำดับขององค์ประกอบในพจนานุกรม
คำถามของฉันเกี่ยวกับการแจกแจงองค์ประกอบของพจนานุกรม // 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) …


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 = …
103 c#  .net  linq  ienumerable 



14
ฉันควรส่งคืน IEnumerable <T> แทน IList <T> หรือไม่
เมื่อฉันเขียน DAL หรือรหัสอื่นที่ส่งคืนชุดของรายการฉันควรทำคำสั่งส่งคืนเสมอ: public IEnumerable&lt;FooBar&gt; GetRecentItems() หรือ public IList&lt;FooBar&gt; GetRecentItems() ขณะนี้ในรหัสของฉันฉันพยายามใช้ IEnumerable ให้มากที่สุด แต่ฉันไม่แน่ใจว่านี่เป็นแนวทางปฏิบัติที่ดีที่สุดหรือไม่? ดูเหมือนจะถูกต้องเพราะฉันส่งคืนประเภทข้อมูลที่ใช้กันทั่วไปมากที่สุดในขณะที่ยังคงอธิบายสิ่งที่ทำอยู่ แต่อาจจะไม่ถูกต้องที่จะทำ
98 c#  ienumerable 


5
เป็นไปได้ไหมที่จะเริ่มทำซ้ำจากองค์ประกอบอื่นที่ไม่ใช่องค์ประกอบแรกโดยใช้ foreach
ฉันกำลังคิดที่จะใช้ IEnumerable สำหรับคอลเลกชันที่กำหนดเองของฉัน (ต้นไม้) ดังนั้นฉันจึงสามารถใช้ foreach เพื่อสำรวจต้นไม้ของฉันได้ อย่างไรก็ตามเท่าที่ฉันรู้ foreach มักจะเริ่มจากองค์ประกอบแรกของคอลเลกชัน ฉันต้องการเลือกจากองค์ประกอบที่ foreach เริ่มต้น เป็นไปได้ไหมที่จะเปลี่ยนองค์ประกอบที่ foreach เริ่มต้น?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.