【发布时间】:2017-04-05 12:58:13
【问题描述】:
var pList = (from p in db.RTLS_PERSONDTLS
where (lsdAts <= p.CREATED_TIME &&
p.CREATED_TIME <= DateTime.Now)
where p.OPERATION_TYPE == 1
let pPhotoRow = (from q in db.Cloud_persons_images
where q.Image_name == p.PERSON_ID
where (lsdAts <= q.Createdtime && q.Createdtime <= DateTime.Now)
select q).FirstOrDefault()
let pExt = pPhotoRow.Img_ext
let photoBytes = pPhotoRow.Person_img
Let personPhoto = new PersonPhotoInfo { PDATA = Convert.ToBase64String(photoBytes), PEXT = pExt }
select new PersonListInfoDTO
{
MOB_NO = p.MOBILE_NO,
ACTINACT = (int)p.ACTINACT,
PHOTO = personPhoto
}).AsNoTracking().ToList();
将字节数组转换为 ToBase64String 时出现异常,因为 LINQ to Entities 无法识别“System.String ToBase64String(Byte[])”方法,而这方法无法转换为存储表达式。我使用 sql Azure 作为我的后端存储。
【问题讨论】:
-
我已经尝试了互联网上针对此异常提供的许多可能的解决方案,但我没有得到解决我的问题的解决方案。感谢您提供的链接
-
解决方案总是一模一样的——双投影。首先在匿名类型中获取原始数据,然后是
AsEnumerable()和可以使用任何 CLR 方法的实际投影。
标签: c# entity-framework linq azure-sql-database