循环遍历单词/短语列表,与数据库表行匹配

本文关键字:数据库 单词 遍历 短语 列表 循环 | 更新日期: 2023-09-27 18:09:55

我有一个。txt中的单词/短语列表(每个单词/短语在新行中),我想循环遍历每个单词/短语并检查这些单词/短语是否出现在评论表的第6列中。我无法解决下面的代码,没有出现在我的datagridview尽管有匹配的"关键字",有人可以审查/纠正我的代码吗?谢谢你。

private void button_Search1_Click(object sender, EventArgs e)
{
    DataTable flaggedcomments = new DataTable("flaggedcomments");
    using (MySqlConnection sqlConn = new MySqlConnection(strProvider))
    {
        using (MySqlDataAdapter da = new MySqlDataAdapter("SELECT Comment_ID, Comments_Date, Comments_Time, Author, Title, Comments_Comment FROM comments ORDER BY Comments_Date ASC, Comments_Time ASC", sqlConn))
        {
            da.Fill(flaggedcomments);
        }
    }
    string[] words = File.ReadAllLines(sourceDirTemp + "a_list_of_words_and_phrases.txt");
    foreach (DataRow da in flaggedcomments.Rows)
    {
        string itemComments = da[5].ToString();
        if (words.Any(wordOrPhrase => Regex.IsMatch(itemComments, @"'b" + Regex.Escape(wordOrPhrase) + @"'b", RegexOptions.IgnoreCase)))
        {
            dataGridView_flaggedComments.Rows.Add(da);
            string itemTitle = da[4].ToString();
            string itemDate = da[1].ToString().Replace(" 12:00:00 AM", "");
            string itemTime = da[2].ToString();
            string itemAuthor = da[3].ToString();
            string itemCommentID = da[0].ToString();
            richTextBox_flaggedComments.AppendText("Date: " + itemDate + "'nTime: " + itemTime + "'nCommenter: " + itemAuthor + "'nTitle: " + itemTitle + "'nDescription: " + itemComments + "'nComment ID: " + itemCommentID + "'n'n--------'n'n");
        }
    }
}

我认为Rows.Add(da)行会起作用,但是当我单击按钮时,它给了我错误,说没有行可以添加到没有列的datagridview控件。

示例"Comments_Comment"为

在监管机构批准其收购Scottish Widows Investment Partnership后,安本资产管理公司(Aberdeen Asset Management)将发布截至2月28日的两个月交易更新。分析师预期:"我们预计未来两个月管理的资产规模为&# 163,1880亿美元,较第一季度减少3%。"

循环遍历单词/短语列表,与数据库表行匹配

如何使用数据绑定,而不是尝试向gridview添加行。您可以这样替换代码中的foreach:

var query = flaggedcomments.AsEnumerable().Where(r =>
    words.Any(wordOrPhrase => Regex.IsMatch(r.Field<string>("Comments_Comment"), @"'b" + Regex.Escape(wordOrPhrase) + @"'b",
        RegexOptions.IgnoreCase)));
dataGridView_flaggedComments.DataSource = query.AsDataView();

你需要在你的visual studio项目中有一个System.Data.DataSetExtensions.dll的引用来完成这项工作。