Сортировка данных, возвращаемых базой данных

В нашем проекте у нас есть требование, что когда набор записей возвращается базой данных, записи должны быть отсортированы по полю TITLE в записи. Записи должны быть отсортированы в алфавитном порядке, но если в названии записи есть номер, то он должен следовать за записями, заголовок которых состоит только из алфавитов.

Подробности: мы используем SQL Server и C#. Данные из базы данных поступают в класс Entity, который перенаправляет данные на другие слои.

Итак, что будет возможным и эффективным решением для этого требования.

1 ответ

Решение

Я предполагаю, что у вас есть объект, который содержит данные и имеет свойство TITLE. Рассматривать:

class Entity
{
   ...
   public string TITLE { get; set; }
   ...
}

Вы можете хранить эти объекты в List<Entity> и позже, когда вам нужно, позвоните Sort метод сортировки.

Чтобы сортировка происходила в соответствии с вашими требованиями, предоставьте Comparer при звонке сортировать. Для получения дополнительной информации см.: http://msdn.microsoft.com/en-us/library/234b841s.aspx.
В Compare(Entity x, Entity y) Вы можете сравнить оба объекта в соответствии с вашими потребностями.


О сравнении TITLE's:
Попробуйте этот метод сравнения:

private static int StringComparer(string x, string y)
{
    if (!x.AllChar()) return 1;
    if (!y.AllChar()) return -1;

    return x.CompareTo(y) * -1;
}

public static bool AllChar(this string x)
{
    char[] chars = x.ToCharArray();
    bool allchar = chars.Any<char>((c) => !char.IsLetter(c));

    return !allchar;
}
Другие вопросы по тегам