-2

現在、if ステートメントは、列内の「で始まる」テキストを見つけて、行を取得します。私は疑問に思っていました: 文字列の次の文字が であるかどうかを確認するにはどうすればよい[ですか? これは、たとえばStartsWithメソッド で

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

3 に答える 3

1

あなたの質問が、クエリ文字列 + "[" で始まる最初のプロパティを持つすべての行を見つける方法である場合、その文字をクエリ文字列に追加するだけではどうですか?

このような:

foreach (DataRow r in queryDataTable.Rows)
    {
        if (r[0].ToString().StartsWith(queryString + "["))
        {
            dt.ImportRow(r);
        }
    }
于 2012-12-13T09:59:50.977 に答える
0

正規表現を試すことができます:

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

    if (match) dt.ImportRow(r);
}
于 2012-12-13T09:59:04.867 に答える
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))

それはあなたのためにそれをするはずです。

于 2012-12-13T10:04:28.603 に答える