在数据表中搜索数据

时间:2012-12-13 09:55:47

标签: c#

目前,if语句在列中找到“以...开头”文本并获取该行。我想知道:我怎么能检查字符串中的下一个字符是[?例如,使用StartsWith方法

 foreach (DataRow r in queryDataTable.Rows)
            {
                if (r[0].ToString().StartsWith(queryString))
                {
                    dt.ImportRow(r);
                }
            }

3 个答案:

答案 0 :(得分:1)

如果您的问题是如何查找具有以查询字符串开头的第一个属性的所有行+“”,那么为什么不将该字符串附加到查询字符串?

像这样:

foreach (DataRow r in queryDataTable.Rows)
    {
        if (r[0].ToString().StartsWith(queryString + "["))
        {
            dt.ImportRow(r);
        }
    }

答案 1 :(得分:0)

您可以尝试使用正则表达式:

foreach (DataRow r in queryDataTable.Rows)
{
    bool match = Regex.IsMatch(r[0].ToString(),".{1}\[.*",RegexOptions.IgnoreCase | RegexOptions.Compiled);

    if (match) dt.ImportRow(r);
}

答案 2 :(得分:0)

public bool PostConditionIsChar(DataRow dr, string query, char charToCheck)
{
  string firstCol = dr[0].ToString();
  return firstCol.StartsWith(query) ? firstCol.Replace(query, "").Length > 0 && firstCol.Replace(query, "").First() == charToCheck : false;
}

<强>用法

dt.Rows.Cast<DataRow>().Where(row => PostConditionIsChar(row, queryString, '[')).ToList().ForEach(rowToAdd => dt.ImportRow(rowToAdd))

那应该为你做。