Dim keywords()As String = {“FirstName”,“LastName”,“Gender”}
我有一个只有1列的数据表。我想检查数据表中的所有行是否包含所有关键字,例如,
Table1
__________
FirstName
LastName
Gender
此表1有效。
Table2
______
FirstName
Gender
此表2无效coz LastName缺失
Table3
______
FirstName
LastName
Gender
DateofBirth
此表3也有效,因为它包含关键字中所有必要的内容。我怎样才能做到这一点 ?是否也可以指出哪些缺失?例如,在table2中,缺少LastName。
增值帮助将是..检查重复...但这不是必要的..如果我能解决第一个问题..我已经非常感激..
非常感谢....
答案 0 :(得分:2)
您可以使用LINQ:
var tableValues = table.AsEnumerable()
.Select(dr => dr.Field<String>("SomeColumn"))
.ToList();
if (keywords.Except(tableValues).Any()) {
//Uh oh...
}
if (tableValues.Distinct().Count() < tableValues.Count) {
//Uh oh...
}
答案 1 :(得分:1)
只需将循环旋转到DataTable行
即可DataTable table = new DataTable();
// TODO: Render table
string[] keywords = { "FirstName", "LastName", "Gender" };
bool isValid = true;
bool hasDuplicates = false;
foreach (string keyword in keywords)
{
DataRow[] rows = table.Select("Field='" + keyword + "'");
if (rows.Count() <= 0)
{
isValid = false;
break;
}
if (rows.Count() > 1)
{
hasDuplicates = true;
break;
}
}
if (!isValid)
{
//TODO:
}
if (hasDuplicates)
{
//TODO:
}