2

こんにちは、データのフィルタリング中に問題が発生しました。

2 つのテーブルがあります。1 つは、すべてのデータが格納されるメイン テーブルです。メイン テーブルからデータをフィルター処理するためのキーワードが格納されている別のテーブルがあります。

私が直面している問題は、メイン テーブル データに到着するキーワードを除外する必要があるため、必要な正確なクエリを作成できないことです。

たとえば、キーワード テーブルに 10 個の単語がある場合、メイン テーブルのデータをこれらすべてのキーワードで検索して、正しくフィルター処理できるようにする必要があります。

質問が明確になったことを願っています。

Also i am using LINQ TO SQL solution in it is most welcome

4

2 に答える 2

2

2 つのDatatablemainDataTable と keyWordTable があるとします。以下の linq を使用します。

var matched = from mainTable in mainDataTable.AsEnumerable()
                      join keyTable in keyWordTable.AsEnumerable() on mainTable.Field<int>("ID") equals keyTable.Field<int>("ID")
                      where !mainTable.Field<string>("Description").Contains(keyTable.Field<string>("KeyWord"))
                      select mainTable;
        if (matched.Count() > 0)
        {
            DataTable finalTable = matched.CopyToDataTable();
        }

代わりの

また、少し汚れているようです。

List<string> keywordList = new List<string>();
foreach (DataRow row in keyWordTable.Rows)
{
     keywordList.Add(row["KeyWord"].ToString());
}

DataTable finalFilteredTable = mainDataTable.Clone();
bool check = false;
foreach (DataRow row in mainDataTable.Rows)
{
     check = false;
     string description = row["Description"].ToString();

     foreach (string s in keywordList)
     {
          if (description.Contains(s))
          {
              check = true;
              break;
          }
      }

      if (!check)
      {
          finalFilteredTable.ImportRow(row);
      }
}
于 2013-10-29T10:36:06.623 に答える