PDFファイルでキーワードを検索し、そのキーワードが見つかったページを返します。キーワードが見つかった場合は、ページのリストとfileNameを返します。ただし、キーワードがPDFファイルでNOT FOUNDだった場合は、データテーブルの行を削除します。C#でデータテーブルから行を削除する
public DataTable dtPubSearchResultsFromFiles(string sqlQuery, string safeKeyword)
{
// Returns a datatable of publication search results based on PDF files.
SqlConnection con = new SqlConnection(getConnectionString());
SqlCommand cmd = new SqlCommand(sqlQuery, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
dt.Columns.Add("Pages", typeof(string));
da.Fill(dt);
dt.PrimaryKey = new DataColumn[] { dt.Columns["publicationID"] };
foreach (DataRow row in dt.Rows)
{
//call search function to look for keyword
List<int> myPages = new List<int>();
string fileName = row["linkToPublicationPDF"].ToString();
myPages = ReadPdfFile(fileName, safeKeyword);
if (myPages.Count > 0)
{
string pagelist = "";
foreach (int page in myPages)
{
pagelist = pagelist + page + " ";
}
row["Pages"] = pagelist;
}
else
{
//remove/delete the row from the datatable if "myPages.Count" is 0
dt.Rows.Remove(row);
}
}
return dt;
}
私が追加すると、この(「dt.Rows.Remove(行)」)、私はページが呼び出され、このエラーが出る「と、System.InvalidOperationException:コレクションが変更された。列挙操作は実行されない場合がありますが」
提案?コメント?修正?すべてが
ありがとうMarios。それは私の問題の最初の部分を解決したようです。 –