รายการ C # เรียงลำดับจากมากไปน้อย


150

ฉันต้องการที่จะได้รับรายการที่เรียงลำดับโดย 'Product.Name ในลำดับถัดลงมา

คล้ายกับฟังก์ชั่นด้านล่างซึ่งเรียงลำดับรายการตามลำดับจากน้อยไปมากย้อนกลับเป็นไปได้ไหม

var newList = list.OrderBy(x => x.Product.Name).ToList();

ปัญหาอาจเป็นได้ว่าคุณเขียนtoListแทนที่จะToList?
Mark Byers

1
ฉันคิดว่าเขาหมายความว่าไม่ยอมรับdescendingคำหลักเพราะเขาไม่ได้เริ่มแสดงออกด้วยfrom x in list...
StriplingWarrior

1
ขออภัยฉันไม่ได้คัดลอกรหัสนั้น แต่พิมพ์จากหน่วยความจำ รหัสจริงของฉันใช้งานได้ แต่เพิ่งกลับรายการที่เรียงตามลำดับจากน้อยไปหามาก
PFranchise

คำตอบ:


260

แน่นอนว่า:

var newList = list.OrderByDescending(x => x.Product.Name).ToList();

หมอ: OrderByDescending (IEnumerable, Func)

ในการตอบกลับความคิดเห็นของคุณ:

var newList = list.OrderByDescending(x => x.Product.Name)
                  .ThenBy(x => x.Product.Price)
                  .ToList();

2
ดังนั้นการแก้ไขของคุณจะเรียงตามชื่อ (จาก z-> a) ตามด้วยราคา (ต่ำ -> สูง)?
PFranchise

11
ใช่ถูกต้องแล้ว การโทรไปที่ OrderBy หรือ ThenBy นั้นขึ้นไปอยู่เสมอ ระเบียบวิธี OrderByDescending และ ThenByDescending เป็นสิ่งที่คุณใช้สำหรับการลดหลั่น
StriplingWarrior




1

ดูโค้ดชิ้นนี้จากโครงการของฉัน

ฉันกำลังพยายามสั่งซื้อรายการใหม่ตามอสังหาริมทรัพย์ที่อยู่ในแบบจำลองของฉัน

 allEmployees = new List<Employee>(allEmployees.OrderByDescending(employee => employee.Name));

แต่ฉันต้องเผชิญกับปัญหาเมื่อ a small and capital letters existเพื่อแก้มันฉันใช้ string comparer

allEmployees.OrderBy(employee => employee.Name,StringComparer.CurrentCultureIgnoreCase)

-2
list = new List<ProcedureTime>(); sortedList = list.OrderByDescending(ProcedureTime=> ProcedureTime.EndTime).ToList();

ซึ่งใช้ได้สำหรับฉันที่จะแสดงเวลาที่เรียงตามลำดับจากมากไปน้อย

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