データを挿入するために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ではありません列の順番に変更があった場合は正しい結果が得られます。助言してください。
がこれを読んで..あなたが
.Select(a => "[" + a.ColumnName.ToLower() + "]")
に避ける場合本当に、あなたは
existingtablecolumnsPresent
上で直接2番目のクエリを使用することができ、これを試すことがあります。http ://stackoverflow.com/questions/16824749/using-linq-except-not-working-as-i-thought。 –'ToList()'の前に 'OrderBy'を使ってみませんか? – schlonzo