Выберите Max в Linq to Entities / Entity SQL с преобразованием типов
-
20-08-2019 - |
Вопрос
Я пытаюсь создать некоторую функциональность CRUD для устаревшей базы данных и использую Entity Framework в качестве инструмента ORM.В одной таблице, 'Sites', есть столбец типа Guid 'Id', который пользователи никогда не видят, и целочисленный тип 'SiteID', который пользователи используют для идентификации Сайта.
Одному богу известно, по какой причине числовой столбец SiteID в базе данных имеет тип varchar(10), но каждый SiteID в нем является целым числом, и все будущие SiteID также будут целыми числами.
С целью создания нового, уникального SiteID целочисленного типа, как я могу сделать то, что фактически является 'SELECT MAX (SiteID)', используя Entity SQL или Linq для Enities??
Другими словами, как я могу преобразовать каждое значение в столбце из varchar(10) в int и выбрать максимальное значение из этого набора??
Это выглядело многообещающе, но linq не может преобразовать синтаксический анализ в "процедуру хранения"...
int x = entities.Sites.Max(s => int.Parse(s.SiteId));
Решение
Другие советы
Это работает...
String[] numbers = new String[] { "2", "34", "5", "23", "5", "1" };
var max = numbers.Max(x => Int32.Parse(x));