无法隐式转换类型System.Collections.Generic.List <char> </char>

时间:2013-11-21 09:10:17

标签: c# list

我正在尝试创建从Json调用中获取的客户名称列表,但是我收到错误:

  

无法隐式转换类型System.Collections.Generic.List<char>   到System.Collections.Generic.List<string>

我正在使用这两个类:

客户:

namespace eko_app
{
    static class Customers
    {
        public static List<CustomerResponse> GetCustomers(string customerURL)
        {
            List<CustomerResponse> customers = new List<CustomerResponse>();

            try
            {
                var w = new WebClient();
                var jsonData = string.Empty;

                // make the select products call
                jsonData = w.DownloadString(customerURL);

                if (!string.IsNullOrEmpty(jsonData))
                {
                    // deserialize the json to c# .net
                    var response = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(jsonData);

                    if (response != null)
                    {
                        customers = response.response;
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            return customers;
        }

        public class BusinessAssociate
        {
            public string business_associate_id { get; set; }
            public string created_by { get; set; }
            public DateTime created { get; set; }
            public DateTime modified { get; set; }
            public bool? deleted { get; set; }
            public string business_id { get; set; }
            public string identity_id { get; set; }
            public string associate_type { get; set; }
            public string name { get; set; }
        }

        public class Identity
        {
            public string identity_id { get; set; }
            public string created_by { get; set; }
            public DateTime created { get; set; }
            public DateTime modified { get; set; }
            public bool? deleted { get; set; }
            public string name { get; set; }
            public object identity_type { get; set; }
        }

        public class ChartOfAccount
        {
            public string chart_of_accounts_id { get; set; }
            public DateTime created { get; set; }
            public DateTime modified { get; set; }
            public string created_by { get; set; }
            public string deleted { get; set; }
            public string account_id { get; set; }
            public string account_name { get; set; }
            public string business_id { get; set; }
            public string account_category { get; set; }
            public string accounts_groups_id { get; set; }
            public string cash_equivalent { get; set; }
            public string acc_category { get; set; }
            public decimal? balance { get; set; }
            public decimal? credit_balance { get; set; }
            public decimal? debit_balance { get; set; }
            public decimal? absolute_balance { get; set; }
            public string balance_type { get; set; }
            public decimal? raw_balance { get; set; }
            public string extended_name { get; set; }
            public string normal_balance_type { get; set; }
        }

        public class CustomerResponse
        {
            public BusinessAssociate BusinessAssociate { get; set; }
            public Identity Identity { get; set; }
            public ChartOfAccount ChartOfAccount { get; set; }
        }

        public class Messages
        {
            public string msgs { get; set; }
            public string errs { get; set; }
        }

        public class RootObject
        {
            public List<CustomerResponse> response { get; set; }
            public Messages messages { get; set; }
        }
    }
}

HomeForm:

 private void GetCustomerNameList()
        {
            // get customers
            customerURL = "https://eko-app.com/BusinessAssociate/list_associates/1/sessionId:" + sessionID + ".json";

            var customers = Customers.GetCustomers(customerURL);

            List<string> customerNames = new List<string>();

            foreach (var c in customers)
            {
                customerNames = c.BusinessAssociate.name.ToList(); <--------error thrown here
            }
        }

错误在HomeForm上的customerNames = c.BusinessAssociate.name.ToList();处抛出。

在创建客户名单时我做错了什么?

3 个答案:

答案 0 :(得分:6)

我认为您想要将所有Customer.BusinessAssociate名称添加到列表中:

foreach (var c in customers)
{
    customerNames.Add(c.BusinessAssociate.name);
}

您最初撰写的内容将每个name string转换为char list

答案 1 :(得分:2)

您将字符列表(字符串)分配到字符串列表中。 在foreach循环之外尝试这样的事情:

customerNames = customers.Select(x => x.BusinessAssociate.name).ToList();

这也使得cutomerNames的初始化变得多余。

答案 2 :(得分:0)

而不是foreach使用:
customerNames = customers.Select(c => c.BusinessAssociate.name).ToList();