วิธีตรวจสอบว่าองค์ประกอบ List <T> มีองค์ประกอบที่มีค่าคุณสมบัติเฉพาะหรือไม่

 public class PricePublicModel { public PricePublicModel() { } public int PriceGroupID { get; set; } public double Size { get; set; } public double Size2 { get; set; } public int[] PrintType { get; set; } public double[] Price { get; set; } } List<PricePublicModel> pricePublicList = new List<PricePublicModel>(); 

วิธีตรวจสอบว่าองค์ประกอบ pricePublicList ค่าเฉพาะหรือไม่ เพื่อให้แม่นยำยิ่งขึ้นฉันต้องการตรวจสอบว่า pricePublicModel.Size == 200 หรือไม่ นอกจากนี้หากองค์ประกอบนี้มีอยู่จะหาได้อย่างไรว่ามันคืออะไร?

แก้ไขหากพจนานุกรมเหมาะสมกว่าสำหรับเรื่องนี้ฉันสามารถใช้พจนานุกรมได้ แต่ฉันต้องรู้ว่า :)

82
08 февр. กำหนดโดย ilija veselica 08 ก.พ. 2011-02-08 21:53 '11 เวลา 21:53 น. 2011-02-08 21:53
@ 6 คำตอบ

หากคุณมีรายการและคุณต้องการทราบว่ามีองค์ประกอบอยู่ในรายการที่ตรงกับเกณฑ์ที่ระบุคุณสามารถใช้ FindIndex อินสแตนซ์ FindIndex ตัวอย่างเช่น

 int index = list.FindIndex(f => f.Bar == 17); 

โดยที่ f => f.Bar == 17 เป็นเพรดิเคตที่มีเกณฑ์การจับคู่

ในกรณีของคุณคุณสามารถเขียน

 int index = pricePublicList.FindIndex(item => item.Size == 200); if (index >= 0) { // element exists, do what you need } 
149
08 февр. คำตอบคือได้รับ Anthony Pegram 08 ก.พ. 2011-02-08 21:57 '11 เวลา 21:57 2011-02-08 21:57
 bool contains = pricePublicList.Any(p => p.Size == 200); 
border=0
84
08 февр. ตอบ Daniel A. White 08 ก.พ. 2011-02-08 21:54 '11 เมื่อ 21:54 2011-02-08 21:54

คุณสามารถใช้ที่มีอยู่

 if (pricePublicList.Exists(x => x.Size == 200)) { //code } 
16
10 июля '13 в 17:32 2013-07-10 17:32 คำตอบนั้นได้รับจาก Tiago เมื่อวันที่ 10 กรกฎาคม 13 เวลา 17:32 2013-07-10 17:32

นี่เป็นเรื่องง่ายที่จะทำกับ LINQ:

 var match = pricePublicList.FirstOrDefault(p => p.Size == 200); if (match == null) { // Element doesn't exist } 
12
08 февр. ยาโคบตอบเมื่อวันที่ 8 ก.พ. 2011-02-08 21:54 '11 เมื่อ 21:54 2011-02-08 21:54

ในความเป็นจริงคุณไม่จำเป็นต้องใช้ LINQ เนื่องจาก List<T> ให้วิธีการที่ตรงกับสิ่งที่คุณต้องการ: Find

ค้นหาองค์ประกอบที่ตรงกับเงื่อนไขที่ระบุโดยเพรดิเคตที่ระบุและส่งคืนการเกิดครั้งแรกใน List<T>

ตัวอย่างรหัส:

 PricePublicModel result = pricePublicList.Find(x => x.Size == 200); 
9
08 февр. ตอบโดย Mark Byers 8 ก.พ. 2011-02-08 21:59 '11 เวลา 21:59 น. 2011-02-08 21:59
 var item = pricePublicList.FirstOrDefault(x => x.Size == 200); if (item != null) { // There exists one with size 200 and is stored in item now } else { // There is no PricePublicModel with size 200 } 
3
08 февр. คำตอบนั้นได้รับจาก Mahesh Velaga 08 ก.พ. 2011-02-08 21:55 '11 เมื่อ 21:55 2011-02-08 21:55

คำถามอื่น ๆ เกี่ยวกับแท็ก หรือ ถามคำถาม