У меня есть таблица, которая содержит данные годовой последовательности в столбце, такие как «1/2010», «2/2010» или «13/2010».Я хочу упорядочить данные из этой таблицы по этому столбцу.Поэтому я должен создать значение порядка для сортировки следующим образом:
-- This code should work if amount of data is less than 1000 record per year.
CAST(SUBSTRING(ReceiveID, 0, CHARINDEX('/', ReceiveID)) AS INT) + 1000 * CAST(SUBSTRING(ReceiveID, CHARINDEX('/', ReceiveID) + 1, 4) AS INT) AS OrderReceiveID
Однако я хочу написать этот код с EF 4.0, но у меня возникло несколько проблем.
СначалаЯ пытаюсь создать выражение заказа в запросе LINQ.Но я не могу вызвать функцию преобразования строки в целочисленное значение, например «int.Parse», потому что она не может преобразовать это в оператор SQL.
Во-вторых, я создаю функцию скалярного значения в базе данных для преобразования строки данных годовой последовательности в целочисленное значение«1/2010» - 20100001. Но я не могу импортировать его в файл edmx, потому что он поддерживает только хранимую процедуру.
Наконец, я создаю настраиваемое представление для этой таблицы, включая столбец настраиваемого порядка (для данных, таких как 2010001) иЯ использую дополнительный столбец, чтобы заказать эту таблицу.Все работает хорошоНо мне это не нравится, потому что мне не нужно создавать одно представление для каждой таблицы.
Есть ли у вас какие-либо идеи для решения этой проблемы без прикосновения к базе данных или создания общей функции для преобразования данных последовательности в целочисленное значение?как моя вторая идея?
Спасибо,