如何解决比较C#中两个DataTable的列名
我有两个数据表,
-
ms-access数据库填充的
-
dtSchema
数据表 -
table
数据表由Excel工作表填充
table
必须有四个名为(SN,FN,DOB,Sec)的列
我想将table
的列名与dtSchema
的列名进行比较。 table
中与dtSchema
不匹配的列将其放在列表中。
foreach (DataColumn col in table.Columns)
{
isColumnMatch = false;
foreach(DataColumn colDb in dtSchema.Columns)
{
if(col.ColumnName == colDb.ColumnName)
{
}
}
}
我可以比较数据表的列名。如果四列以上的table
与dtSchema
匹配,并且table
有四列以上,则必须将不匹配的列放在列表中。
解决方法
这可以通过简单的LINQ查询来实现,例如:
var tableColumnNames = table.Columns.Cast<DataColumn>().Select(c=>c.ColumnName).ToList();
var schemaColumnNames = dtSchema.Columns.Cast<DataColumn>().Select(c=>c.ColumnNames).ToList();
var unmatchedColumnNames =
from col in tableColumnNames where !schemaColumnNames.Contains(col) select col;
,
为此,您需要使用任何集合来保存所有不匹配的列,以防万一columnName或title不匹配,则必须将其推送到某个列表。因此,最后,您将获得不匹配列的列表
=====更新======
var filter= from firstDt in dt1.AsEnumerable()
where !(from secondDt in dt2.AsEnumerable() select secondDt["Name"]).Contains(firstDt["Name"].ToString()) select firstDt; DataTable resultDt = filter.CopyToDataTable();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。