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

我有以下两个类:

class MyData { public List 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 myData2List = new List(); foreach(string item in myData.PropertyList) { myData2List.Add(new myData2() { item, propertyB, propertyC }); } 

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

这很好,很容易。 您希望根据特定列表中的每个项目(字符串)执行某些操作,因此请将其作为查询表达式的起点。 您想为每个字符串创建一个新项目( MyData2 ),因此您可以使用投影。 您想在最后创建一个列表,因此您可以调用ToList()来完成作业:

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