您好,我在过滤数据时遇到问题。
我有两个表,一个是存储所有数据的主表。还有另一个表,其中存储关键字以过滤主表中的数据。
我面临的问题是我无法提出所需的确切查询,因为需要过滤掉到达主表数据的关键字。
例如,如果关键字表中有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/