我有.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”就是例如。
在收购苏格兰寡妇投资合伙公司获得监管部门批准后,安本资产管理公司将发布2月28日的两个月的交易更新。分析师的预期:“两个月内,我们预计管理资产将减少1880亿英镑3第一季度的百分比。
答案 0 :(得分:2)
如何使用数据绑定,而不是尝试向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。