首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LINQ实体不识别System.String ToBase64String(Byte[])方法

LINQ实体不识别System.String ToBase64String(Byte[])方法
EN

Stack Overflow用户
提问于 2017-04-05 12:58:13
回答 2查看 720关注 0票数 1
代码语言:javascript
运行
复制
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实体不识别方法'System.String ToBase64String(Byte[])‘方法,因此出现异常,并且该方法无法转换为存储表达式。是使用sql作为后端存储的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-05 13:22:39

这个怎么样?

代码语言:javascript
运行
复制
var pList =from item in (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()
                          select new {
                               p.MOBILE_NO,
                               p.ACTINACT,
                               Img_ext= pPhotoRow.Img_ext,
                               photoBytes=pPhotoRow.Person_img
                               }).ToList())                             )

            select new PersonListInfoDTO
             {
                MOB_NO = item.MOBILE_NO,
                ACTINACT = (int)item.ACTINACT,
                PHOTO = new PersonPhotoInfo { PDATA = Convert.ToBase64String(item.photoBytes), PEXT = pExt }
             }).AsNoTracking().ToList();
票数 0
EN

Stack Overflow用户

发布于 2017-04-05 13:43:30

Linq将将您的查询转换为sql,生成的查询将包含对Convert.ToBase64String方法的调用,其中sql不知道该方法。可以执行一个ToList()操作,将对象从数据库加载到内存中,然后应用Convert.ToBase64String方法

代码语言:javascript
运行
复制
var pList = (from item in (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())
                      select new {
                           p.MOBILE_NO,
                           p.ACTINACT,
                           Img_ext= pPhotoRow.Img_ext,
                           photoBytes=pPhotoRow.Person_img
                           }).ToList()
        .Select(t=> new PersonListInfoDTO
         {
            MOB_NO = item.MOBILE_NO,
            ACTINACT = (int)item.ACTINACT,
            PHOTO = new PersonPhotoInfo { PDATA = Convert.ToBase64String(item.photoBytes), PEXT = pExt }
         }).ToList();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43231948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档