0

您好,我有一个 MySQL 和 LINQ to SQL 任务将 Int 值从 DB 转换为 String,MySql 不支持 toString(),我收到了错误消息。

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

MySql 不支持 SqlFunction 类。

4

3 回答 3

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()
                              });
于 2014-02-27T10:23:44.997 回答
0

您可以通过添加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()
                          });
于 2014-02-27T10:33:22.600 回答
0

Entity Framework 中的 int to string 也支持了一个很好的解决方案,您可以参考。通过这种方法,您可以如下更改您的来源。

var data = (from o in ObjectContext.MyTable.Where(d => d.a == a)
                          select new MyObject
                          {
                              Id = o.Id,
                              StringProperty = SqlFunctions.StringConvert((double)o.intColumn)
                          });
于 2017-08-09T02:57:17.433 回答