Код :
var page = (from p in dbContext.Page
where p.Id== Id
select new PageObject
{
PageID = p.PageID,
CategoryId = p.attr.Any(a => a.Attribute == "CategoryId") ?
p.attr.Where(a => a.Attribute == "CategoryId").FirstOrDefault().Value : 0 // How do I convert the Value to Int?
}).FirstOrDefault();
Проблема :
Мы используем EF в существующем приложении, где в приведенном выше коде он инициализирует PageObject (с множеством свойств, которые я удалил для простоты). CategoryId является целым числом, и я пытаюсь выяснить, как преобразовать значение в int, я я не могу использовать int.Parse в запросе LINQ, так как он выдает ошибку:
LINQ to Entities не распознает метод Int32 Parse(System.String) и этот метод нельзя преобразовать в выражение хранилища.
Примечание. Я не могу избежать использования краткой инициализации свойства, и это необходимо сделать в самом запросе LINQ.
Value
является целым числом, почему бы просто не попробовать прямое приведение, также известное как(int)(p.attr.Where(a => a.Attribute == "CategoryId").FirstOrDefault().Value)
? Если я не ошибаюсь, и это строка? - person Ron Beyer   schedule 21.07.2015