2014-09-24 105 views
0

返回一個對象名單我想回到在WCF對象的名單,我的問題是我如何使用這個guide作爲參考實現它在我的應用WCF服務在Xamarin.Android

public List GetConsumer(string transformer, string account) { var search = new List(); 

    using (var conn = new MySqlConnection(ConnString)) 
    { 
     var item = new SearchConsumer(); 
     conn.Open(); 
     const string cmdText = "SELECT * FROM tblconsumer_account WHERE [email protected] AND [email protected]"; 
     var cmd = new MySqlCommand(cmdText, conn); 
     cmd.Parameters.AddWithValue("@tsf", transformer); 
     cmd.Parameters.AddWithValue("@acct", account); 
     var reader = cmd.ExecuteReader(); 
     while (reader.Read()) 
     { 

      item.SearchResult = true; 
      item.AccountNumber = reader["accountNumber"].ToString(); 
      item.TrasformerNumber = reader["transformer"].ToString(); 
      item.Firstname = reader["firstname"].ToString(); 
      item.LastName = reader["lastname"].ToString(); 
      item.Address = reader["address"].ToString(); 
      item.SerialNumber = reader["serialNumber"].ToString(); 
      search.Add(item); 
     } 
    } 
    return search.ToList(); 
} 

(IAM),但我有一個問題,找到性能在我的應用程序,像e.Result.Lastnamee.Result.Firstname

回答

0

更改以下

public List GetConsumer(string transformer, string account) 

public List<SearchConsumer> GetConsumer(string transformer, string account) { 

然後在您的移動項目上更新您的服務參考。

然後,您將能夠做到以下幾點:

using(var service = new MyService()) //MyService is the name of your service reference 
{ 
    var searchConsumers = service.GetConsumer(transformer, account); 
    //Then loop your list 
    foreach(var searchConsumer in searchConsumers) 
    { 
     //Now access properties 
     //searchConsumer.Firstname, searchConsumer.Lastname 
    } 
} 

如果你只想返回一個對象,那麼你就需要你的簽名更改爲以下:

public SearchConsumer GetConsumer(string transformer, string account) 

並將功能的主體更改爲僅獲得一個項目,其用法如下:

using(var service = new MyService()) //MyService is the name of your service reference 
{ 
    var searchConsumer = service.GetConsumer(transformer, account); 
    //Now access properties 
    //searchConsumer.Firstname, searchConsumer.Lastname 
} 

編輯

如果你要使用異步Web服務調用,你需要做的事情這

using(var service = new MyService()) //MyService is the name of your service reference 
{ 
    service.GetConsumerCompleted += GetConsumerCompletedCallback; 
    service.GetConsumerAsync(transformer, account); 
} 

//this method can be auto generated when hitting tab twice in visual studio after adding += 

public void (object sender, GetConsumerCompletedEventArgs e) 
{ 
    //e.Result.Firstname, e.Result.Lastname 
    //or if you are returning a list then loop over using code above 
} 
+0

感謝您的回答一樣,生病嘗試添加這對我btnSearch在此之後一個 – armory09 2014-09-25 08:35:53

+0

喜先生點擊事件'使用(var service = new MobileBillingServiceClient()) { var searchConsumer = service.GetConsumerAsync(_txtTranformer.text,_txtAccount.text);} iam得到一個錯誤,說不能將「void」賦值給一個隱式類型的局部變量。 – armory09 2014-09-25 08:53:07

+0

我在這行代碼中獲取錯誤'service.GetConsumerAsync(_txtTranformer.text,_txtAccount.text);' – armory09 2014-09-25 08:59:52