合并具有相同对象类型的不同WCF ServiceClient中的两个列表

时间:2015-03-17 18:45:30

标签: c# asp.net wcf webforms

我有一个类库,其中包含一个名为&#34; Club&#34;由两个WCF服务使用。每个方法都有一个具有相同返回类型的方法,一个Club-objects列表:List<Club>

当我在webform中调用这两个方法时,我得到了两个包含这些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但没有结果。我怎样才能修复它,因为我想在一个网格中显示两个服务的结果。

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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