2013-08-23 42 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

相關問題