使用linq将对象模型列表映射到另一个列表

fre*_*hie 12 c# linq

我有两个共享一些属性的对象模型和一个我想用来创建另一个类型列表的类型的列表.现在,我有这样的东西(它的工作原理):

List<ObjectA> TheListOfObjectsA = the result of some query;
List<ObjectB> TheListOfObjectsB = new List<ObjectB>();

foreach (ObjectA TheObjectA in TheListObjectsA)
{
   ObjectB TheObjectB = new ObjectB();

   TheObjectB.Prop1 = TheObjectA.Prop1;
   TheObjectB.Prop2 = TheObjectA.Prop2;

   TheListOfObjectsB.Add(TheObjectB);
}
Run Code Online (Sandbox Code Playgroud)

我很好奇我是否以及如何在没有循环的linq语句中重写它(即使我们知道linq语句将作为循环执行).

谢谢.

Hon*_*vář 32

你是说这个吗?

var TheListOfObjectsB  = TheListObjectsA.Select(a => new ObjectB() { Prop1  = a.Prop1, Prop2 = a.Prop2 }).ToList();
Run Code Online (Sandbox Code Playgroud)


jav*_*iry 6

List<ObjectB> TheListOfObjectsB = TheListOfObjectsA
    .Select(t => new ObjectB {
        Prop1 = t.Prop1,
        Prop2 = t.Prop2,
    }).ToList();
Run Code Online (Sandbox Code Playgroud)

您必须调用该ToList()方法才能获取List<ObjectB>. 否则,您将得到一个IEnumerable<ObjectB>;