Достаточно просто. Через этот код в частичном для вашей CartoonStory
модели.
partial class CartoonStory
{
public IEnumerable<CartoonFigure> FemalesThenMales
{
get
{
return Females.Count() > 0 ? Females : Males;
}
}
public IEnumerable<CartoonFigure> Females
{
get
{
return CartoonFigures.Where(c => c.Sex.Name == "Female");
}
}
public IEnumerable<CartoonFigure> Males
{
get
{
return CartoonFigures.Where(c => c.Sex.Name == "Male");
}
}
}
РЕДАКТИРОВАТЬ (после вопроса автора комментария):
Когда вы будете готовы искать персонажей мультфильма.
var figures = dataContext.CartoonStories.Where(c => c.Id == 1).FemalesThenMales;
Очень ясно, что происходит. Я большой поклонник разбиения кода на более мелкие, легко узнаваемые части. Да, это будет отправлено в базу данных в виде одного или двух запросов (один, если женщины найдены; два в противном случае).
НЕ ДЕЛАЙТЕ ЭТОГО !!!
var figures = dataContext.CartoonStories.Where(c => c.Id == 1).CartoonFigures.Any(c => c.Sex == "Female") ? dataContext.CartoonStories.Where(c => c.Id == 1).CartoonFigures.Where(c => c.Sex == "Female") : dataContext.CartoonStories.Where(c => c.Id == 1).CartoonFigures.Where(c => c.Sex == "Male");
Одни лайнеры - это не все, чем они хотят. (