2016-07-22 7 views
0

データを挿入するためにSQLテーブルに追加する必要がある列名をキャプチャします。LINQのキーワードの問題を除いて

Columnspresent - (、 "LOGTIME"、 "理由"、 "ID"、 "コメント" "ノード")は、ファイル内のすべての列のリスト

existingtablecolumnsPresent - 既存のテーブルのすべての列のリスト

columnsNotPresent - SQLテーブルに追加する必要がある列のリスト(取得する必要があります)(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ではありません列の順番に変更があった場合は正しい結果が得られます。助言してください。

+0

がこれを読んで..あなたが.Select(a => "[" + a.ColumnName.ToLower() + "]")に避ける場合

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

本当に、あなたはexistingtablecolumnsPresent上で直接2番目のクエリを使用することができ、これを試すことがあります。http ://stackoverflow.com/questions/16824749/using-linq-except-not-working-as-i-thought。 –

+0

'ToList()'の前に 'OrderBy'を使ってみませんか? – schlonzo

答えて

0

あなたは(それが...で注文する必要はありません)

+0

@ user1046415こんにちは。 –

+0

@ user1046415ありがとう –

+0

上記のクエリでnameColTの意味は何ですか? – user1046415