使用 Lambda 或 LINQ 将一个类实例转换或映射到另一个类实例的列表?

发布于 2024-07-28 23:18:33 字数 781 浏览 4 评论 0原文

我有以下两个类:

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 });
}

不确定是否可以使用 LINQ 或 Lambda 表达式的 .Net 3.5 功能来完成此操作?

I have the following two classes:

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; }
}

If I have an instance of MyClass, I need to convert it to a list of MyData2. I could do it by looping MyData.PropertyList and caching other property values and inserting them to a list of MyData2 like this:

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 });
}

Not sure if this can be done with .Net 3.5 features of LINQ or Lambda expression?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情未る 2024-08-04 23:18:33

这既美好又简单。 您想要根据特定列表中的每个项目(字符串)执行某些操作,因此请将其作为查询表达式的起点。 您想要为每个字符串创建一个新项目(MyData2),因此您使用投影。 您想在最后创建一个列表,因此您调用 ToList() 来完成这项工作:

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

It's nice and easy. You want to do something based on every item (a string) in a particular list, so make that the starting point of your query expression. You want to create a new item (a MyData2) for each of those strings, so you use a projection. You want to create a list at the end, so you call ToList() to finish the job:

 var myData2List = myData.PropertyList
                         .Select(x => new MyData2 { 
                             PropertyA = x, 
                             PropertyB = myData.PropertyB, 
                             PropertyC = myData.PropertyC })
                         .ToList();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文