Я знаю, что опоздал к этому, но при проектировании этого как модели данных я бы предпочел добавить таблицу отношений, и эта таблица отношений должна иметь свойство, определяющее порядок (например, худший друг равен 0 лучше всего 100).
Тогда в EF я бы явно упорядочил по этому свойству, если список, который я получаю, должен быть того порядка.
Это означает, что независимо от того, какой метод вы используете для запроса данных, эти отношения можно использовать последовательно. Поэтому, если бы вы использовали EF, вы могли бы использовать его (хотя, да, это не так удобно, как Friend.Friends, но код был бы более понятным относительно его намерения - Friend.FriendRelationships.Select (p => p. Друг) .OrderBy (p => p.OrderValue) ), и если вы использовали прямой SQL, то вы могли бы использовать и его.
Если бы я натолкнулся на Friend.Friends в коде, я бы не знал, какой порядок будет применен к нему.
Если он у вас должен быть, вы всегда можете добавить его как свойство не из базы данных -
public class Friend
{
public virtual List<FriendRelationship> UnorderedFriendList { get; set; }
[NotMapped]
public IEnumerable<Friend> Friends
{
get
{
return UnorderedFriendList.Select(p => p.Friend).OrderByDescending(p => p.OrderValue);
}
}
}