Обычно этого можно добиться, анализируя строки как числа и задавая System.Globalization.NumberStyles.AllowHexSpecifier
.
Поскольку это LINQ to SQL, для этого не будет перевода. Поэтому вам нужно применить сортировку после завершения остальной части вашего запроса и немедленно выполнить ее с помощью AsEnumerable
или ToList
. Имейте в виду, что при этом все соответствующие данные, запрошенные запросом, будут отправлены клиенту, поэтому важно предварительно отфильтровать, а затем применить сортировку на стороне клиента.
Ваш запрос будет похож на этот:
dc.Table
.Select(o => o.Number) // where number is the property/column name
.AsEnumerable()
.OrderBy(s => Int32.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier))
Вот пример этого в действии без LINQ to SQL:
string[] numbers = { "1", "10", "1A", "2", "2A", "3", "4", "5", "6", "7", "8", "9" };
var query = numbers.OrderBy(s => Int32.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier));
foreach (var s in query)
Console.WriteLine(s);