c# - 通过 LINQ to SQL 过滤数据

标签 c# asp.net linq linq-to-sql

您好,我在过滤数据时遇到问题。

我有两个表,一个是存储所有数据的主表。还有另一个表,其中存储关键字以过滤主表中的数据。

我面临的问题是我无法提出所需的确切查询,因为需要过滤掉到达主表数据的关键字。

例如,如果关键字表中有10个单词,那么主表数据必须彻底搜索所有这些关键字,以便能够正确过滤掉。

我希望我已经把问题说清楚了。

此外,我正在使用 LINQ TO SQL 解决方案,这是最受欢迎的

最佳答案

假设您有两个Datatable mainDataTable 和 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);
      }
}

关于c# - 通过 LINQ to SQL 过滤数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19654342/

相关文章:

c# - 如何设置枚举标志的所有位

asp.net - 是否可以迭代所有 OutputCache 键?

c# - LINQ 查询的 IReadOnlyCollection 部分

ios - Linq 方法 Release模式中的 MonoTouch JIT 错误

c# - Azure Http 触发函数调用

c# - 推荐一个设计模式

c# - SignInManager.PasswordSignInAsync 抛出空对象异常

asp.net - 防止登录用户访问asp.net mvc 5中的登录页面

asp.net - 如何从正在使用的REST API(ServiceStack)中获取URI

c# - 使用 LINQ 将 List<string> 与 List<object> 匹配?