除了 LINQ 中的关键字问题
Except keyword issue in LINQ
我想捕获需要添加到 SQL table 以插入数据的列名。
Columnspresent
--文件中所有列的列表("Node","Logtime","Reason","ID","Comments")
existingtablecolumnsPresent
-- SQL("Node","Value","Reason",table中所有列的列表=27=],"Comments","logtime")
columnsNotPresent
-- 需要添加到 SQL table 的列列表(必须在输出中得到 "Value" 但没有得到)..
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();
如果列的顺序发生变化,以上代码不会给出正确的结果。请指教。
你可以试试这个(它不需要按...订购)
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
..
上使用第二个查询
我想捕获需要添加到 SQL table 以插入数据的列名。
Columnspresent
--文件中所有列的列表("Node","Logtime","Reason","ID","Comments")
existingtablecolumnsPresent
-- SQL("Node","Value","Reason",table中所有列的列表=27=],"Comments","logtime")
columnsNotPresent
-- 需要添加到 SQL table 的列列表(必须在输出中得到 "Value" 但没有得到)..
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();
如果列的顺序发生变化,以上代码不会给出正确的结果。请指教。
你可以试试这个(它不需要按...订购)
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
..