ฉันต้องการเรียงลำดับ 2 คอลัมน์โดยใช้กรอบงานเอนทิตี
เป็นอย่างไรบ้าง?
return _repository.GetSomething().OrderBy(x => x.Col1 .. Col2)?
กล่าวคือ
SELECT * FROM Foo ORDER BY Col1, Col2
ฉันต้องการเรียงลำดับ 2 คอลัมน์โดยใช้กรอบงานเอนทิตี
เป็นอย่างไรบ้าง?
return _repository.GetSomething().OrderBy(x => x.Col1 .. Col2)?
กล่าวคือ
SELECT * FROM Foo ORDER BY Col1, Col2
คำตอบ:
ลองOrderBy(x => x.Col1).ThenBy(x => x.Col2)
. เป็นคุณสมบัติของ LINQ ไม่ใช่เฉพาะ EF
อีกวิธีหนึ่ง:
qqq.OrderBy(x => new { x.Col1, x.Col2} )
ลอง:
OrderBy(x => x.Col1).ThenBy(x => x.Col2)
สำหรับการเรียงลำดับจากมากไปน้อยลองทำดังนี้:
OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)
การเรียงลำดับต่อไปนี้เกิดขึ้นในระดับ DB ไม่อยู่ในผลลัพธ์ที่ส่งคืน
ลอง:
IQueryable<a>.OrderBy("col1 asc, col2 asc")
ตัวอย่างที่ 1:
ctx.CateringOrders.OrderBy("Details.DeliveryDate asc, Details.DeliveryTime asc")
ตัวอย่างที่ 2:
ctx.CateringOrders.OrderBy("{0} {1}, {2} {3}",
"Details.DeliveryDate", "asc",
"Details.DeliveryTime", "asc"
)
IQueryable<a>
แบบสอบถามเอนทิตีอยู่ที่ไหน
คือ
"col1 asc"
คอลัมน์ 1 และทิศทางการเรียงลำดับ
"col2 asc"
คือคอลัมน์ 2 และทิศทางการเรียงลำดับ
โปรดทราบว่าสิ่งนี้จะใช้ไม่ได้กับ Telerik's Grid หรือส่วนประกอบ DataSource อื่น ๆ ของ Telerik แม้ว่าจะใช้อ็อบเจ็กต์ IQueryable ที่กรองล่วงหน้า แต่การเรียงลำดับจะทำโดยอัตโนมัติเสมอเนื่องจากขั้นตอนสุดท้ายจะลบล้างการตั้งค่าการเรียงลำดับของคุณได้อย่างมีประสิทธิภาพ
คุณต้องปฏิบัติตาม: การระบุการจัดเรียงเริ่มต้นในตาราง