Я использую LINQ to SQL для извлечения записей из базы данных, сортировки их по строковому полю, а затем выполняю некоторые другие операции с ними. К сожалению, поле Имя, по которому я сортирую, выходит из базы данных, как это
Name
ADAPT1
ADAPT10
ADAPT11
...
ADAPT2
ADAPT3
Я бы хотел отсортировать поле Имя в числовом порядке. Прямо сейчас я использую объект Regex, чтобы заменить «ADAPT1» на «ADAPT01» и т. Д. Затем я снова сортирую записи, используя другой запрос LINQ. Код, который я имею для этого, выглядит как
var adaptationsUnsorted = from aun in dbContext.Adaptations
where aun.EventID == iep.EventID
select new Adaptation
{
StudentID = aun.StudentID,
EventID = aun.EventID,
Name = Regex.Replace(aun.Name,
@"ADAPT([0-9])$", @"ADAPT0$1"),
Value = aun.Value
};
var adaptationsSorted = from ast in adaptationsUnsorted
orderby ast.Name
select ast;
foreach(Adaptation adaptation in adaptationsSorted)
{
// do real work
}
Проблема в том, что цикл foreach генерирует исключение
System.NotSupportedException was unhandled
Message="Method 'System.String Replace(System.String, System.String,
System.String)' has no supported translation to SQL."
Source="System.Data.Linq"
Мне также интересно, есть ли более чистый способ сделать это с помощью всего одного запроса LINQ. Любые предложения будут оценены.