Выберите Max в Linq to Entities / Entity SQL с преобразованием типов - PullRequest
2 голосов
/ 29 июня 2009

Я пытаюсь создать некоторые функции CRUD для устаревшей базы данных и использую Entity Framework в качестве инструмента ORM. Одна таблица, «Сайты», имеет столбец «Идентификатор» типа Guid, который никогда не видят пользователи, и целочисленный тип «SiteId», который пользователи используют для идентификации Сайта.

Бог знает, по какой причине числовой столбец SiteId в базе данных имеет тип varchar (10), но в каждом указанном SiteId есть целое число, и все будущие SiteId также будут целыми числами.

Для создания нового уникального целочисленного типа SiteId, как я могу сделать то, что фактически является «SELECT MAX (SiteId)», используя Entity SQL или Linq to Enities ??

Другими словами, как я могу преобразовать каждое значение в столбце из varchar (10) в int и выбрать максимальное значение из этого набора ??

Это выглядело многообещающе, но linq не может преобразовать синтаксический анализ в "процедуру хранения" ...

int x = entities.Sites.Max(s => int.Parse(s.SiteId));

Ответы [ 2 ]

3 голосов
/ 29 июня 2009
3 голосов
/ 29 июня 2009

Это работает ...

String[] numbers = new String[] { "2", "34", "5", "23", "5", "1" };

var max = numbers.Max(x => Int32.Parse(x));
...