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

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

14
การส่งคืน IENumerable <T> เทียบกับ IQueryable <T>
อะไรคือความแตกต่างระหว่างการกลับมาIQueryable&lt;T&gt;และการกลับมาIEnumerable&lt;T&gt;อีกครั้งหนึ่งจะได้รับความนิยมมากกว่าเมื่อใด IQueryable&lt;Customer&gt; custs = from c in db.Customers where c.City == "&lt;City&gt;" select c; IEnumerable&lt;Customer&gt; custs = from c in db.Customers where c.City == "&lt;City&gt;" select c;


10
IEnumerable vs List - จะใช้อะไร? พวกเขาทำงานอย่างไร
ฉันสงสัยว่า Enumerators ทำงานอย่างไรและ LINQ พิจารณาตัวเลือกสองอย่างง่าย ๆ เหล่านี้: List&lt;Animal&gt; sel = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct().ToList(); หรือ IEnumerable&lt;Animal&gt; sel = (from animal in Animals join race in Species on animal.SpeciesKey equals race.SpeciesKey select animal).Distinct(); ฉันเปลี่ยนชื่อของวัตถุดั้งเดิมของฉันเพื่อให้ดูเหมือนเป็นตัวอย่างทั่วไปมากขึ้น แบบสอบถามเองไม่สำคัญ สิ่งที่ฉันต้องการถามคือ: foreach (Animal animal in sel) …
677 c#  linq  list  ienumerable 

13
ความแตกต่างระหว่าง IQueryable <T> และ IEnumerable <T> คืออะไร
ความแตกต่างระหว่างIQueryable&lt;T&gt;และIEnumerable&lt;T&gt;คืออะไร? ดูเพิ่มเติมความแตกต่างระหว่าง IQueryable และ IEnumerableที่ทับซ้อนกับคำถามนี้คืออะไร

14
ฉันจะเพิ่มรายการลงในคอลเลกชัน IEnumerable <T> ได้อย่างไร
คำถามของฉันเป็นชื่อด้านบน ตัวอย่างเช่น, IEnumerable&lt;T&gt; items = new T[]{new T("msg")}; items.ToList().Add(new T("msg2")); แต่หลังจากทั้งหมดมันมีเพียง 1 รายการภายใน เรามีวิธีได้items.Add(item)ไหม ชอบ List&lt;T&gt;
405 c#  list  ienumerable 

18
ผ่านรายการเดียวเป็น IEnumerable <T>
มีวิธีการทั่วไปในการส่งรายการประเภทเดียวTไปยังวิธีที่คาดว่า IEnumerable&lt;T&gt;พารามิเตอร์หรือไม่ ภาษาคือ C #, กรอบงานเวอร์ชัน 2.0 ขณะนี้ฉันกำลังใช้วิธีผู้ช่วย (เป็น. Net 2.0 ดังนั้นฉันจึงมีวิธีการคัดเลือก / ฉายผู้ช่วยที่คล้ายกับ LINQ ทั้งหมด) แต่วิธีนี้ดูเหมือนโง่: public static class IEnumerableExt { // usage: IEnumerableExt.FromSingleItem(someObject); public static IEnumerable&lt;T&gt; FromSingleItem&lt;T&gt;(T item) { yield return item; } } วิธีการอื่น ๆ ของหลักสูตรจะมีการสร้างและเติมList&lt;T&gt;หรือและผ่านมันแทนArrayIEnumerable&lt;T&gt; [แก้ไข]เป็นวิธีการขยายอาจตั้งชื่อ: public static class IEnumerableExt { // usage: someObject.SingleItemAsEnumerable(); public static …
377 c#  .net  generics  ienumerable 

6
ฉันจะคืนค่า IEnumerable ที่ว่างเปล่าได้อย่างไร
รับรหัสต่อไปนี้และคำแนะนำที่ให้ไว้ในคำถามนี้ฉันตัดสินใจที่จะแก้ไขวิธีการดั้งเดิมนี้และถามว่ามีค่าใด ๆ ใน IEnumarable ส่งคืนหรือไม่ถ้าไม่คืน IEnumerable ที่ไม่มีค่า นี่คือวิธีการ: public IEnumerable&lt;Friend&gt; FindFriends() { //Many thanks to Rex-M for his help with this one. //https://stackoverflow.com/users/67/rex-m return doc.Descendants("user").Select(user =&gt; new Friend { ID = user.Element("id").Value, Name = user.Element("name").Value, URL = user.Element("url").Value, Photo = user.Element("photo").Value }); } เนื่องจากทุกอย่างอยู่ในแถลงการณ์ส่งคืนฉันจึงไม่รู้ว่าจะทำอย่างไร อยากได้สิ่งนี้ไหม public IEnumerable&lt;Friend&gt; FindFriends() { //Many …
329 c#  ienumerable 

19
นับรายการจาก IE ที่นับได้โดยไม่ต้องวนซ้ำ?
private IEnumerable&lt;string&gt; Tables { get { yield return "Foo"; yield return "Bar"; } } สมมติว่าฉันต้องการทำซ้ำในสิ่งเหล่านั้นและเขียนสิ่งที่ต้องการประมวลผล #n ของ #m มีวิธีที่ฉันสามารถหาค่าของ m โดยไม่ต้องทำซ้ำก่อนการทำซ้ำหลักของฉันหรือไม่? ฉันหวังว่าฉันทำให้ตัวเองชัดเจน
317 c#  .net  ienumerable 

8
IEnumerable และ Recursion โดยใช้ผลตอบแทน
ฉันมีIEnumerable&lt;T&gt;วิธีที่ฉันใช้เพื่อค้นหาการควบคุมในหน้า WebForms วิธีการแบบเรียกซ้ำและฉันมีปัญหาบางอย่างกลับประเภทที่ฉันต้องการเมื่อyield returnเป็นคืนค่าของการโทรซ้ำ รหัสของฉันมีลักษณะดังนี้: public static IEnumerable&lt;Control&gt; GetDeepControlsByType&lt;T&gt;(this Control control) { foreach(Control c in control.Controls) { if (c is T) { yield return c; } if(c.Controls.Count &gt; 0) { yield return c.GetDeepControlsByType&lt;T&gt;(); } } } ขณะนี้มีข้อผิดพลาด "ไม่สามารถแปลงประเภทการแสดงออก" หากอย่างไรก็ตามวิธีการนี้จะคืนค่าชนิดIEnumerable&lt;Object&gt;รหัสจะสร้างขึ้น แต่จะส่งคืนชนิดที่ไม่ถูกต้องในผลลัพธ์ มีวิธีใช้yield returnในขณะที่ใช้การเรียกซ้ำหรือไม่

16
ทุกคนสามารถอธิบาย IEnumerable และ IEnumerator ให้ฉันได้ไหม [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการในวันที่ 11 เดือนที่ผ่านมา ปรับปรุงคำถามนี้ ทุกคนสามารถอธิบาย IEnumerable และ IEnumerator ให้ฉันได้ไหม ตัวอย่างเช่นเมื่อใดที่จะใช้งานเกิน foreach ความแตกต่างระหว่าง IEnumerable และ IEnumerator คืออะไร ทำไมเราต้องใช้มัน?

6
ไวยากรณ์ที่สั้นลงสำหรับการส่งจากรายการ <X> ไปยังรายการ <Y>?
ฉันรู้ว่าเป็นไปได้ที่จะส่งรายการจากประเภทหนึ่งไปอีกประเภทหนึ่ง (เนื่องจากวัตถุของคุณมีวิธีดำเนินการแบบคงที่อย่างชัดเจนในที่สาธารณะเพื่อทำการแคสต์) ทีละรายการดังต่อไปนี้: List&lt;Y&gt; ListOfY = new List&lt;Y&gt;(); foreach(X x in ListOfX) ListOfY.Add((Y)x); แต่เป็นไปไม่ได้ไหมที่จะส่งรายชื่อทั้งหมดในครั้งเดียว? ตัวอย่างเช่น, ListOfY = (List&lt;Y&gt;)ListOfX;
237 c#  list  casting  ienumerable 

4
วิธีการต่อเชื่อม IENumerable <T> สองอันเข้ากับ IEnumerable <T> ใหม่ได้อย่างไร
ฉันมีสองอินสแตนซ์ของIEnumerable&lt;T&gt;(พร้อมกันT) ฉันต้องการอินสแตนซ์ใหม่IEnumerable&lt;T&gt;ซึ่งเป็นการเชื่อมต่อของทั้งสอง มีวิธีการ build-in ใน. Net เพื่อทำสิ่งนั้นหรือฉันต้องเขียนเอง?

2
สร้างพจนานุกรมขึ้นใหม่จาก IEnumerable <KeyValuePair <>>
ฉันมีวิธีการที่คืนค่าIEnumerable&lt;KeyValuePair&lt;string, ArrayList&gt;&gt;แต่ผู้โทรบางรายต้องการผลลัพธ์ของวิธีการเป็นพจนานุกรม ฉันจะแปลงIEnumerable&lt;KeyValuePair&lt;string, ArrayList&gt;&gt;เป็นDictionary&lt;string, ArrayList&gt;สิ่งที่ฉันสามารถใช้ได้TryGetValueอย่างไร? วิธี: public IEnumerable&lt;KeyValuePair&lt;string, ArrayList&gt;&gt; GetComponents() { // ... yield return new KeyValuePair&lt;string, ArrayList&gt;(t.Name, controlInformation); } โทร: Dictionary&lt;string, ArrayList&gt; actual = target.GetComponents(); actual.ContainsKey("something");

6
คืน enumerables ทั้งหมดพร้อมผลตอบแทนในทันที โดยไม่ต้องวนซ้ำผ่าน
ฉันมีฟังก์ชั่นต่อไปนี้เพื่อรับข้อผิดพลาดในการตรวจสอบความถูกต้องของการ์ด คำถามของฉันเกี่ยวข้องกับการจัดการกับ GetErrors IEnumerable&lt;ErrorInfo&gt;ทั้งสองวิธีมีผลตอบแทนประเภทเดียวกัน private static IEnumerable&lt;ErrorInfo&gt; GetErrors(Card card) { var errors = GetMoreErrors(card); foreach (var e in errors) yield return e; // further yield returns for more validation errors } เป็นไปได้ไหมที่จะส่งคืนข้อผิดพลาดทั้งหมดGetMoreErrorsโดยไม่ต้องแจงผ่านพวกเขา คิดเกี่ยวกับมันอาจเป็นคำถามที่โง่ แต่ฉันต้องการให้แน่ใจว่าฉันจะไม่ผิด

22
จะตรวจสอบว่า IEnumerable เป็นโมฆะหรือว่างเปล่าได้อย่างไร?
ฉันรักstring.IsNullOrEmptyวิธีการ ฉันชอบที่จะมีบางสิ่งบางอย่างที่จะช่วยให้การทำงานเดียวกันสำหรับ IEnumerable มีแบบนี้เหรอ? บางทีคลาสตัวช่วยในการรวบรวมข้อมูล เหตุผลที่ผมถามคือว่าในงบลักษณะรหัสรกถ้าลายคือif (mylist != null &amp;&amp; mylist.Any())มันจะสะอาดFoo.IsAny(myList)กว่าที่คิด โพสต์นี้ไม่ได้ให้คำตอบว่า: IEnumerable ว่างเปล่า? .

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