如何使用几个关键字asp.net验证数据表中的行

时间:2012-05-01 14:44:37

标签: asp.net datatable arrays

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。

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

非常感谢....

2 个答案:

答案 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:
}