【问题标题】:Convert or map a class instance to a list of another one by using Lambda or LINQ?使用 Lambda 或 LINQ 将一个类实例转换或映射到另一个类实例的列表?
【发布时间】:2010-11-13 15:30:02
【问题描述】:

我有以下两个类:

class MyData {
  public List<string> PropertyList { get; private set;}
  public string PropertyB { get; set; }
  public string PropertyC { get; set; }
}

class MyData2 {
  public string PropertyA { get; set;}
  public string PropertyB { get; set; }
  public string PropertyC { get; set; }
}

如果我有一个 MyClass 的实例,我需要将它转换为 MyData2 的列表。我可以通过循环 MyData.PropertyList 并缓存其他属性值并将它们插入到 MyData2 列表中,如下所示:

string propertyB = myData.PropertyB;
string propertyC = myData.PropertyC;
List<MyData2> myData2List = new List<MyData>();
foreach(string item in myData.PropertyList)
{
  myData2List.Add(new myData2() { item, propertyB, propertyC });
}

不确定这是否可以通过 .Net 3.5 的 LINQ 或 Lambda 表达式功能来完成?

【问题讨论】:

    标签: c# linq lambda


    【解决方案1】:

    这很简单。您想根据特定列表中的每个项目(字符串)做某事,因此将其作为查询表达式的起点。您想为每个字符串创建一个新项目(MyData2),因此您使用投影。你想在最后创建一个列表,所以你打电话给ToList() 来完成这项工作:

     var myData2List = myData.PropertyList
                             .Select(x => new MyData2 { 
                                 PropertyA = x, 
                                 PropertyB = myData.PropertyB, 
                                 PropertyC = myData.PropertyC })
                             .ToList();
    

    【讨论】:

    • myDataList 是 myData 的列表的情况如何?例如从 myDataList 到 myData2List?
    猜你喜欢
    • 2010-11-13
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多