2011-12-20 6 views
0

У меня есть DataTable на C# и я хочу отправить его на сервер SQL CE 4. Одна вещь, которая делает ее несколько более сложной, заключается в том, что, когда она сталкивается с дубликатом, она должна либо игнорировать ее, либо перейти к следующей строке в DataTable. Я огляделся, но много информации, которую я нахожу, похоже, не работает с CE-версией SQL Server. Каков эффективный способ сделать это?DataTable to SQL CE 4 Server

+1

вы можете оставить то, что, котор вы пробовали. – BizApps

+0

http://stackoverflow.com/questions/8566784/invalid-option-specified-in-create-index-statement. Затем я наткнулся на эту библиотеку пару часов назад http://sqlcebulkcopy.codeplex.com/, но он просто выдает исключение, когда он встречается с дубликатом, и, похоже, не существует опции переопределения. – Skoder

+0

Почему бы просто не удалять повторяющиеся строки из таблицы данных (ala Перчатки компенсаторов) перед загрузкой? –

ответ

1

Фильтр DataTable, чтобы исключить повторяющиеся строки перед загрузкой, с помощью метода DataTable.Select

например

DataTable table = DataSet1.Tables["Orders"]; 

    // Presuming the DataTable has a column named Date. 
    string expression; 
    expression = "Date > #1/1/00#"; // you will need logic to remove your duplicates 
    DataRow[] foundRows; 

    // Use the Select method to find all rows excluding duplicates 
    foundRows = table.Select(expression); 

    // .NET 3.5 onwards 
    DataTable filteredDataTable = foundRows.copyToDataTable(); 
+0

Спасибо, я не встретил DataTable.Select выражения. – Skoder

0

Попробуйте эту логику.

var dt = new DataTable(); //Supposed that this is your DataTable 

foreach(DataRow row in dt.Rows) 
    { 

     var find = MyFindMethod("Id"); 1. select statement that find if the id is on database 

     if(find.Rows > 0) 
      { 
      //Id exist do nothing 
      } 
     else 
      { 
      //Id not exist then 2. Do Insert to sql ce id I not exist 
      MyInsertMethod("Id"); 
      } 
    } 

С уважением

Смежные вопросы