2013-08-23 40 views
1

我在c#web服务中创建了三个列表,它们是从xml输入填充的web方法。我想将这三个列表合并为一个实体(DataSet将是最好的,因为使用此Web服务的iOS应用程序已经被编程为接受和分析DataSet),并从Web方法返回它们。如何将列表合并到单个数据实体中#

这是目前我的代码看起来像:

[WebMethod] 
public DataSet SelectObjects(string ExternalID, string Password) 
{ 
    DataSet ds = new DataSet(); 

    MembershipAuthServiceReference.MembershipAuthenticationService objService = new MembershipAuthServiceReference.MembershipAuthenticationService(); 
    MembershipAuthServiceReference.SoapHeaderCredentials objSoapHeader = new MembershipAuthServiceReference.SoapHeaderCredentials(); 
    MembershipAuthServiceReference.MemberUserInfo objMemberInfo = new MembershipAuthServiceReference.MemberUserInfo(); 

    try 
    { 
     objSoapHeader.UserName = ExternalID; 
     objSoapHeader.Password = Password; 

     objMemberInfo = objService.GetMembershipInfo(); 

     List<Obj1> ListObj1 = new List<Obj1>(); 

     for (int i = 0; i < objMemberInfo.Obj1.Length; i++) 
     { 
      Obj1 obj_Obj1 = new Obj1(); 
      obj_Obj1.Stuff = objMemberInfo.Obj1[i].Stuff.ToString(); 
      ListObj1.Add(obj_Obj1); 
     } 

     List<Obj2> ListObj2 = new List<Obj2>(); 

     for (int i = 0; i < objMemberInfo.Obj2.Length; i++) 
     { 
      Obj2 obj_Obj2 = new Obj2(); 
      obj_Obj2.Stuff = objMemberInfo.Obj2[i].Stuff.ToString(); 
      ListObj2.Add(obj_Obj2); 
     } 

     List<Obj3> ListObj3 = new List<Obj3>(); 

     for (int i = 0; i < objMemberInfo.Obj3.Length; i++) 
     { 
      Obj3 obj_Obj3 = new Obj3(); 
      obj_Obj3.Stuff = objMemberInfo.Obj3[i].Stuff.ToString(); 
      ListObj3.Add(obj_Obj3); 
     } 

    } 
    catch (Exception ex) 
    { 
     string sError; 
     sError = ex.Message.ToString(); 
    } 
    return ds; 

} 

如何这些名单组合成一个数据集?我假设它有可能?如果没有,是否有一个可行的替代方案来做同样的事情?

+0

可以使用Concat的方法将串联列表中 VAR combinedList = ListObj1.Concat (ListObj2).Concat(ListObj3); –

回答

1

首先拼接你的清单,如下图所示,然后使用该链接生成数据集

var combinedList= ListObj1.Concat(ListObj2).Concat(ListObj3); 

How do I transform a List<T> into a DataSet?

+0

而不是concat,您可以将所有内容添加到单个列表中以开始。 theres没有理由在你显示的代码创建3个单独的列表对象 –

+0

我猜这甚至不能编译。我们可以连接不同类型的清单,如“清单”和“清单”吗? –

+0

即使Obj1,Obj2和Obj3的结构完全不同,我也可以使用单个列表? – optionsix

相关问题