如何使用LINQ生成新类型的对象

Ric*_*cky 9 c# linq

我有两个List<T>不同类型的对象(即List<Apple>List<Tiger>).现在我想组合2个对象的属性来生成一个新的(匿名)对象类型.

如何使用LINQ实现?

Jon*_*eet 15

那么你只想将苹果列表的第一个元素与老虎列表的第一个元素结合起来吗?

如果是这样,如果您使用的是.NET 4,则可以使用Zip:

var results = apples.Zip(tigers, (apple, tiger) => 
                   new { apple.Colour, tiger.StripeCount });
Run Code Online (Sandbox Code Playgroud)

如果您不使用.NET 4,则可以使用我们ZipMoreLINQ中的实现.

如果你想用其他方式匹配苹果和老虎,你可能想要使用一个连接:

var results = from apple in apples
              join tiger in tigers on apple.Name equals tiger.Name
              select new { apple.Color, tiger.StripeCount };
Run Code Online (Sandbox Code Playgroud)