รับรายการคุณสมบัติจากรายการวัตถุ


90

ปัจจุบันฉันใช้foreachลูปเพื่อส่งคืนรายการobjectคุณสมบัติ

 class X
 {
     List<X> Z = GetXlist();
     List<String> r = new List<String>();

     foreach (var z in Z)
     {
         r.Add(z.A);
     }

     return r;
}

มีวิธีที่ฉันสามารถย่อให้สั้นลงเพื่อที่ฉันจะได้ไม่ต้องเขียนforeachลูปหรือไม่?


คุณไม่ได้เขียนสำหรับการวนซ้ำ มีความแตกต่างที่คุณควรระวังสำหรับโปรแกรมเมอร์stackexchange.com/questions/178218/…
Darren Young

คำตอบ:


173

LINQคือคำตอบ คุณสามารถใช้เพื่อ "โปรเจ็กต์" จากคอลเล็กชันอ็อบเจ็กต์ของคุณไปยังคอลเล็กชันอื่น - ในกรณีนี้คือคอลเล็กชันของค่าคุณสมบัติอ็อบเจ็กต์

List<string> properties = objectList.Select(o => o.StringProperty).ToList();

13

คุณสามารถใช้ LINQ:

List<X> Z = GetXlist();

List<String> r = Z.Select(z => z.A).ToList();

return r;

หรือเพียงแค่

return GetXlist().Select(z => z.A).ToList();

ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับLINQ มันเป็นความรักที่มีประโยชน์


0
List<string> properties = objectList.Select(o => o.StringProperty).ToList();

คุณสามารถทำได้โดยOverLoadingวิธีส่วนตัวและใช้ในแบบสอบถาม LINQ


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