2010-07-15 4 views
0

Je veux utiliser les codes ci-dessous. J'ai donc une liste générique < MyClass > Je pense que je devrais utiliser using System.Reflection; méthode pour obtenir la liste < MyClass > propriété pour remplir la chaîne [] columnNames, object [] columnValues ​​mais comment puis-je l'utiliser?comment utiliser dynamic insert - linq to sql?


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; 

      } 

     } 

    } 

Répondre

0

Cela semble extrêmement trop compliquée pour la tâche. Il est difficile de voir exactement ce que vous essayez de faire. Ai-je raison de supposer que vous avez une liste de MyClass et que vous voulez insérer tous les articles MyClass comme TBL_Customers dans un tableau? Vous voulez probablement essayer quelque chose comme ceci:

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(); 
}