2016-07-22 6 views
0

Я хочу захватить имена столбцов, которые необходимо добавить в таблицу SQL, чтобы вставить данные.За исключением проблемы с ключевым словом в LINQ

Columnspresent - Список всех столбцов в файле ("Node", "Logtime", "Причина", "ID", "Комментарии")

existingtablecolumnsPresent - Список всех столбцов в существующую таблицу в SQL («Узел», «Значение», «Причина», «Идентификатор»), «Комментарии», «Время регистрации»)

columnsNotPresent - Список столбцов, которые необходимо добавить в таблицу SQL (необходимо получить «Значение» на выходе, но не получено).

List<string> columnsPresent = 
      dt.Columns.Cast<DataColumn>() 
     .Select(a => a.ColumnName.ToLower()) 
     .ToList(); 

List<string> existingtablecolumnsPresent = 
      existingtable.Columns.Cast<DataColumn>() 
     .Select(a => "[" + a.ColumnName.ToLower() + "]") 
     .ToList(); 

List<string> columnsNotPresent = 
     columnsPresent.OrderBy(t => t) 
     .Except(existingtablecolumnsPresent.OrderBy(t => t)) 
     .ToList(); 

Вышеупомянутый код не является givin g правильные результаты, если есть изменение порядка столбцов. Пожалуйста, сообщите.

+0

прочитать: HTTP : //stackoverflow.com/questions/16824749/using-linq-except-not-working-as-i-thought. –

+0

Почему вы не используете 'OrderBy' прямо перед' ToList() ' – schlonzo

ответ

0

вы можете попробовать это (это нужно не приказать ..)

List<string> existingtablecolumnsPresentNoSqrBr = new List<string>(); 
existingtablecolumnsPresent.ForEach(c => { 
       c = c.Replace("[", string.Empty); 
       c = c.Replace("]",string.Empty); 
       existingtablecolumnsPresentNoSqrBr.Add(c); 
       }); 

List<string> columnsNotPresent = 
      columnsPresent.Except(existingtablecolumnsPresentNoSqrBr) 
      .ToList(); 

действительно, если вы избегать .Select(a => "[" + a.ColumnName.ToLower() + "]") вы можете использовать второй запрос непосредственно на existingtablecolumnsPresent ..

+0

@ user1046415 Привет, можете ли вы дать мне какие-либо отзывы? –

+0

@ user1046415 спасибо –

+0

Что означает имяColT в вышеуказанном запросе? – user1046415