使用 Lambda 或 LINQ 将一个类实例转换或映射到另一个类实例的列表?
我有以下两个类:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这既美好又简单。 您想要根据特定列表中的每个项目(字符串)执行某些操作,因此请将其作为查询表达式的起点。 您想要为每个字符串创建一个新项目(
MyData2
),因此您使用投影。 您想在最后创建一个列表,因此您调用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 callToList()
to finish the job: