Search code examples
asp.netasp.net-mvccsvcsvhelper

Cannot implicitly convert type 'System.Collections.Generic.List<Object>' to 'string'


I have encountered an error around my variable addresslist.

Cannot implicitly convert type 'System.Collections.Generic.List<Object>' to 'string'

I've been trying to populate my model that has a nested List<Object> with a data from a CSV file but I've encountered this error.

Here is the code where I tried to populate my nested List<Object>

public class FundTransferMap : ClassMap<FundTransfer>
    {
        public FundTransferMap()
        {
            Map(m => m.senderRefId);
            Map(m => m.sender).ConvertUsing(row =>
            {
                var senderlist = new List<Sender>
            {
                new Sender { name = row.GetField("senderName"),
                    address = Map(m => m.sender).ConvertUsing(row1 =>
                    {
                      var addresslist = new List<Address>
                    {
                            new Address { line1 = row1.GetField("senderAddrLine1"),
                            line2 = row1.GetField("senderAddrLine2"),
                            city = row1.GetField("senderCity"),
                            province = row1.GetField("senderProvince") }
                    };
                        return addresslist;
                    })
                },
            };
                return senderlist;
            });


        }
    }

Here are my models

public class FundTransfer
    {
        public String senderRefId { get; set; }
        public List<Sender> sender { get; set; }
    }


public class Sender
    {
        public String name { get; set; }

        public List<Address> address { get; set; }

    }

 public class Address
    {
        public String line1 { get; set; }

        public String line2 { get; set; }

        public String city { get; set; }

        public String province { get; set; }
    }

Solution

  • You only need to use the ConvertUsing once.

    public class FundTransferMap : ClassMap<FundTransfer>
    {
        public FundTransferMap()
        {
            Map(m => m.senderRefId);
            Map(m => m.sender).ConvertUsing(row =>
            {
                var senderlist = new List<Sender>
                {
                    new Sender { name = row.GetField("senderName"),
                        address =  new List<Address>
                        {
                            new Address { line1 = row.GetField("senderAddrLine1"),
                            line2 = row.GetField("senderAddrLine2"),
                            city = row.GetField("senderCity"),
                            province = row.GetField("senderProvince") }
                        } 
                    },
                };
                return senderlist;
            });
        }
    }