将两个序列组合成不同类型

Ham*_*m3d 1 c# linq collections

我有两个类定义如下:

class Foo
{
  public string name {get; set;}
  public long number {get; set;}
}

class Bar
{
  //some properties

  public string otherName {get; set;}
  public long otherNumber {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

如何IEnumerable将这两种类型的两个序列组合成一个新的匿名类型,该类型由两个类的属性组合而成.

例:

Foo:
name1 - number1
name2 - number2
name3 - number3

Bar:
otherName1 - otherNumber1
OtherName2 - otherNumber2

Desired Result:
name1 - number1
name2 - number2
name3 - number3
otherName1 - otherNumber1
OtherName2 - otherNumber2
Run Code Online (Sandbox Code Playgroud)

Zip在linq中试过功能但没有运气.

Gio*_*sos 6

用这个:

    var result = efoo.Select(x => new { x = x.name, y = x.number })
                     .Concat(ebar.Select(x => new { x = x.otherName, y = x.otherNumber }));
Run Code Online (Sandbox Code Playgroud)

result是匿名类型的枚举具有x,y作为属性.您可以使用正常foreach循环遍历此序列:

   foreach (var i in result)
   {
        string name = i.x;
        long number = i.y;
   }
Run Code Online (Sandbox Code Playgroud)

  • @LyubomyrShaydariv如果签名匹配,它被认为是一个程序集中的相同类型.匿名类型是基于程序集的. (3认同)