/ / MySql Linq to SQL перетворює int у рядок - c #, linq-to-sql, linq-to-mysql

MySql Linq в SQL перетворює int в рядок - c #, linq-to-sql, linq-to-mysql

Привіт, у мене є завдання MySQL і LINQ to SQL для перетворення значення Int з БД в Рядок, toString () не підтримується MySql, і я отримую про це помилку.

var data = (from o in ObjectContext.MyTable.Where(d => d.a == a)
select new MyObject
{
Id = o.Id,
StringProperty = o.intColumn.ToString()
});

Клас SqlFunction не підтримується для MySql.

Відповіді:

1 для відповіді № 1

Ви можете спробувати перетворити результати на Enumerable, а потім здійснити запит щодо нього:

var data = (from o in ObjectContext.MyTable.AsEnumerable().Where(d => d.a == a)
select new MyObject
{
Id = o.Id,
StringProperty = o.intColumn.ToString()
});

0 для відповіді № 2

Ви можете отримати всі дані, додавши AsEnumerable() до таблиці, або ви можете зробити вибірку спочатку, а потім перетворення пізніше - якщо я не помиляюся, це повинно дати трохи легший виклик SQL:

var tempData = (from o in ObjectContext.Where(d => d.a == a) select o);

var converted = (from o in tempData.AsEnumerable()
select new MyObject
{
Id = o.Id,
StringProperty = o.intColumn.ToString()
});

Як варіант, напишіть все за один раз, використовуючи першу частину як підзапит:

var data = from x in
(from o in ObjectContext.Where(d => d.a == a) select o)
.AsEnumerable()
select new MyObject
{
Id = x.Id,
StringProperty = x.intColumn.ToString()
});

0 для відповіді № 3

int до рядка в Entity Framework також підтримав чудове рішення, на яке ви можете звернутися. За допомогою цього методу ви можете змінити джерело наступним чином.

var data = (from o in ObjectContext.MyTable.Where(d => d.a == a)
select new MyObject
{
Id = o.Id,
StringProperty = SqlFunctions.StringConvert((double)o.intColumn)
});