0

Dim keywords() As String = {"FirstName", "LastName", "Gender"}

我有一个只有 1 列的数据表。我想检查数据表中的所有行是否包含所有关键字,例如,

    Table1
    __________
    FirstName
    LastName
    Gender

此表 1 有效。

    Table2
     ______
     FirstName
     Gender

此表 2 无效,因为缺少姓氏

     Table3
      ______
      FirstName
      LastName
      Gender
      DateofBirth

此表 3 也是有效的,因为它包含关键字中的所有必要内容。我怎样才能做到这一点 ?是否也可以指出缺少哪个?例如,在 table2 中,缺少 LastName。

增值帮助将是..检查重复项..但这不是必需的..如果我能解决第一个问题..我已经很感激了..

非常感谢 ....

4

2 回答 2

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...
}
于 2012-05-01T14:46:40.533 回答
1

Simply rotate a loop to DataTable rows

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:
}
于 2012-05-01T14:53:00.023 回答