使用 linq 生成一个新对象

本文关键字:一个 对象 新对象 linq 使用 | 更新日期: 2023-09-27 17:59:32

我有一个来自数据库的对象,如下所示:

Var oldobject = context.db.getValues()// Do db operations and get values.

我有一个从对象构建新列表,每个新对象对象都有四个属性:

Public class newClass
{
  Public int id {get;set;}
  Public string description {get;set;}
  Public string variation {get;set;}
  Public string size {get;set;}
}

所有这些信息都存在于 oldobject 中,但格式不同,例如:对象包含 2 个对象:

Oldobject
   [0] 
      Type      null
     >Menu->
                      Name                   “sample” 
                      -> Layouts            count =4
                           ->[0]
                               Size                                 “1”
                              ->One more collection   count=4
                                  ->[0]     
                                      ->Id                      1
                                          Variation         “Variance”
                                           Description     “Test”
   [1]                       
     I am expecting the newobject contains all the iterated data from the oldobject where,
">

大小"是"多一个集合">对象的通用字段,所以我的 List<newClass> list

{
Size:1
Id:1
Variation:”Variance”
Description: “Test”   
},
{
Size:1
Id:2
Variation:”Variance2”
Description: “Test2”
}

。等等。

每个数据都是动态的,">布局"也可以包含 100 个项目,OldObject 也可以包含 100 个项目。如何在不使用 forloop 的情况下提取此信息,或者是否可以在性能方面逐个对象循环?

使用 linq 生成一个新对象

这应该适合您:

List<newClass> result = oldObject.Menu.Layouts
    .SelectMany(l => l.OneOrMoreCollection
        .Select(c => new newClass
        {
            id = c.Id,
            variation = c.Variation,
            description = c.Description,
            size = l.Size
        }))
        .ToList();