合并来自具有相同对象类型的不同 WCF ServiceClients 的两个列表

Merging two list from different WCF ServiceClients which have the same object-type

我有一个 class 库,其中包含一个名为 "Club" 的 class,它被两个 WCF 服务使用。它们每个都有一个具有相同 return 类型的方法,一个俱乐部对象列表:List<Club>.

当我在网络表单中调用这两种方法时,我得到了两个包含这些俱乐部对象的列表,但是我无法在 Concat 的帮助下合并这些列表,因为一个列表被视为 serviceClient1.List<Club> 而另一个一个被视为 serviceClient2.List 而不仅仅是 List<Club>.

  var resultService1 = service1Client.GetClubByName(search).ToList();
  var resultService2 = service2Client.GetClubByName(search).ToList();
  var endResult = resultService1.Concat(resultService2);

我试过使用特定的对象类型转换和更改 var,但没有结果。我该如何修复它,因为我想在一个网格中显示来自这两种服务的结果。

提前致谢!

一个解决方案是创建一个包含您需要的属性的新匿名类型。

var endResult = resultService1
                  .Select(x => new { x.Prop1, x.Prop2})
                  .Concat(resultService2
                           .Select(x => new { x.Prop1, x.Prop2}));

嗯,它们不一样(命名空间 + class 名称)。而且它们由不同的服务返回的事实也 "indicates" 它们不是 "same"。即使它们今天具有相同的形状(属性列表),也不能保证它们很快就会改变(你控制服务吗?)。

话虽如此,您可以通过在客户端创建扩展方法以从一个俱乐部 class 转换为另一个俱乐部来解决此问题。或者手动转换它们(循环或 linq)。