除了 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..

上使用第二个查询