2016-07-22 61 views
0

我想要捕獲需要添加到SQL表中的列名以插入數據。除LINQ中的關鍵字問題

Columnspresent - 文件中的所有列( 「節點」, 「LOGTIME」, 「理性」, 「ID」, 「評論」)名單

existingtablecolumnsPresent - 在現有的表中的所有列的列表在SQL中(「節點」,「值」,「原因」,「ID」,「註釋」,「日誌時間」)

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

爲什麼不在'ToList()'之前使用'OrderBy'? – 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

nameColT在上述查詢中的含義是什麼? – user1046415