views:

26

answers:

1

i want to use below codes. So i have a generic list<MyClass> i think that i should use using System.Reflection; method to get list<MyClass> property to fill string[] columnNames, object[] columnValues but how can i use it?


foreach (var item in List<myClass>)
  {
        // i want to fill get columnNames and values to fill below arrays how to?
  }


public static  class MyExtensionMethod

    {

        public static bool DynamicInsertCustomerExtension(this MyDataContext db, string[] columnNames, object[] columnValues)

        {

            try

            {

                if (columnNames.Length == 0 || columnValues.Length == 0)

                {

                    throw new Exception("Column Name or Column Value array is empty!");

                }



                if (columnNames.Length != columnValues.Length)

                {

                    throw new Exception("Column Name array and Column Value array are in different length!");

                }



                TBL_Customer entity = new TBL_Customer();



                for (int i = 0; i < columnNames.Length; i++)

                {

                    entity.GetType().GetProperty(columnNames[i]).SetValue(entity, columnValues[i], null);

                }



                db.TBL_Customers.InsertOnSubmit(entity);



                return true;



            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

                return false;

            }

        }

    }
A: 

This looks extremely over-complicated for the task. It's hard to see exactly what you're trying to do. Am I right to assume that you've got a list of MyClass and want to insert all of the MyClass items as TBL_Customers into a table? You probably want to try something like this:

public void InsertAll(List<MyClass> items) {
   var itemsAsCustomers = items.Select(item => new TBL_Customer
   {
      ID = item.UserID,
      Username = item.UsernamePropertyOnMyClass,
   });

   db.TBL_Customers.InsertAllOnSubmit(itemsAsCustomers);
   db.SubmitChanges();
}
David Hedlund