Reputation: 1520
I have the following classes:
public class Order
{
public int Oid {get; set;}
public DateTime OrderDate {get; set;}
public List<OrderDetails> OrderDetails {get; set;}
}
public class OrderDetail
{
public int Oid {get; set;}
public int Price {get; set;}
public Order Order {get; set;}
public EventSchedule EventSchedule {get; set;}
}
public class EventSchedule
{
public int Oid {get; set;}
public BaseEvent BaseEvent {get; set;}
public List<OrderDetail> OrderDetails {get; set;}
}
public class BaseEvent
{
public int Oid {get; set;}
public string Name {get; set;}
public List<EventSchedule> EventSchedules {get; set;}
}
I have the following code:
var result = Database.Orders.Where(o => o.DateTime == dateTime);
Now, I want to sort the result
:
case "Date":
result = (sortingOrder == "desc") ? result.OrderByDescending(c => c.OrderDate) : result.OrderBy(c => c.OrderDate);
break;
// the problem is here this code not works
case "EventName":
result = (sortingOrder == "desc") ? result.All(o=>o.OrderDetails.OrderBy(d=>d.EventSchedule.BaseEvent.Name)) : ...;
break;
The Order
has a collection of OrderDetail
. OrderDetail
has EventSchedule
. And, EventSchedule
has BaseEvent
. This is possible to sort Order
object by Name
property in BaseEvent
?
Upvotes: 3
Views: 1307
Reputation: 597
What about this
case "EventName":
result = results.OrderBy(
r => r.OrderDetails.Select(
od => od.EventSchedule.BaseEvent.Name).Distinct().FirstOrDefault());
//...
Upvotes: 2