如何在C#中将对象列表中的值分配给另一个列表

时间:2019-07-03 09:07:17

标签: c# linq foreach

我有几个此类的清单。

public class Image
{
    public int ImageID { get; set; }
    public int JobAddressID { get; set; }
    public DateTime CreatedDate { get; set; }
    public string Name { get; set; }
    public string Extension { get; set; }
    public string Type { get; set; }
    public Byte[] ImageBytes { get; set; }
    public int Imagetag { get; set; }
}

public class ImageView
{
    public int tag { get; set; }
    public byte[] ImageData { get; set; }
    public DateTime CreatedDate { get; set; }
    public string Name { get; set; }
}

我想要的是将一个列表中的值分配给另一个列表,而又不会出现可怕的foreach循环,也许是使用linq的东西吗?

我的列表是(它们已实例化并准备就绪)

 List<Image> _imageList 
 List<ImageView> ImageView

伪代码

ImageView.tag = Image.ImageID
 ImageView.ImageData = ImageBytes

我已经尝试过了,但是我仍然需要另一个循环才能将值从blah分配给我的Imageview。

var blah = _imageList.GroupBy(i => new { i.ImageID, i.ImageBytes }).ToArray();

1 个答案:

答案 0 :(得分:1)

似乎在创建新Select的分组之后需要ImageView

var blah = _imageList.GroupBy(i => new { i.ImageID, i.ImageBytes })
                     .Select(x => new ImageView
                     {
                        tag = x.Key.ImageID,
                        ImageData = x.Key.ImageBytes
                     }).ToList();

免责声明:我没有考虑其他2个属性,因为您没有在问题中指定它们。

注意byte [ ]分组可能导致意外结果。请注意,将在数组的引用之间而不是它们的内容之间进行比较。因此,如果不同的对象确实共享单个byte [ ] ImageBytes

相同引用,则您将只有一个组。
相关问题