我想捕获需要添加到SQL表中的列名,以便插入数据。
Columnspresent
- 文件中所有列的列表("节点"," Logtime","原因"," ID& #34;"注释&#34)
existingtablecolumnsPresent
- SQL中现有表中所有列的列表(" Node"," Value"," Reason",&# 34; ID""注释"" logTime Description该条&#34)
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();
如果列的顺序发生变化,上面的代码没有给出正确的结果。请告知。
答案 0 :(得分: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
上使用第二个查询。