如何在 Linq 输出列表中将字节数组转换为图像

本文关键字:字节数 字节 数组 转换 图像 Linq 输出 列表 | 更新日期: 2023-09-27 18:36:36

如何在列表中执行此操作(user.image = plugins。加载图像(用户。图像))
加载图像是以位图图像的形式返回图像的功能

 var query = (
                     from user in chatDBContext.tbl_User
                     select new
                         {
                         user.FirstName, user.LastName, user.Gender, user.Email,
                         user.DoB, user.Address, user.City, user.State,user.Country,
                         user.Quote, user.username, (user.image = plugins.LoadImage(user.Image))
                          }
                     ).ToList();

如何在 Linq 输出列表中将字节数组转换为图像

考虑到plugins.LoadImage(user.Image))不能在linq2sql(也不是EntityFramework)上下文中执行。

所以:首先执行查询,在内存中获取对象(例如,您可以通过调用.ToList().ToArray()来执行此操作),然后检索图像。

// database oriented query 
var query = from user in chatDBContext.tbl_User
            select user;
// take objects in memory THEN retrieve images
var objects = query.ToList().Select(user => new
{
    user.FirstName, user.LastName, user.Gender, user.Email,
    user.DoB, user.Address, user.City, user.State,
    user.Quote, user.username, image = plugins.LoadImage(user.Image)
});

请考虑您可以避免重复所有字段user只需选择整个对象而不是所有单个属性:

var objects = query.ToList().Select(user => new
{
    user, image = plugins.LoadImage(user.Image))
});

用法:

foreach (var obj in objects)
{
    Console.WriteLine(obj.user.FirstName);
    Console.WriteLine(obj.user.LastName);
    // and so on all user properties
    Console.WriteLine(obj.image.Height); // just example
}

编辑(澄清)

在您的源代码中,有 2 个不同的问题:

  1. 您正在尝试设置 user.image 属性(无论如何,我不知道您的 User 类中是否有名为 image 的属性):您无法在 anonymus 对象构造函数中赋值。相反,就像我的示例或其他答案示例一样,您应该在匿名对象初始值设定项中声明image属性权限。

new { user.image = plugins.LoadImage(user.Image) }

应该成为

new { image = plugins.LoadImage(user.Image) }

  1. 你不能将所有 C# 代码执行到 linq2sql(也不是 EntityFramework)中,只允许使用少数方法,如 Convert.ToInt32().ToString() 等。

有关可以在 linq2sql 查询中执行的代码的详细信息,请查看此处,否则,对于此处的实体框架,请参阅此处

var query = (from user in chatDBContext.tbl_User
                 select new
                     {
                     user.FirstName, user.LastName, user.Gender, user.Email,
                     user.DoB, user.Address, user.City, user.State,user.Country,
                     user.Quote, user.username, user.image = user.Image
                      }
                 ).ToList()
             .Select(c => new {
                     FirstName = c.FirstName, LastName = c.LastName, Gender = c.Gender, Email = c.Email,
                     DoB = c.DoB, Address = c.Address, City = c.City, State = c.State, Country = c.Country,
                     Quote = c.Quote, username = c.username, image = plugins.LoadImage(c.image)
                      }).ToList();