c# - 通过字符串匹配跳过记录
问题描述
我正在循环浏览一个充满产品的大型 excel 文件。我们只想处理 Brand = x 或 Product = 'y' 的行。下面的代码工作有一个可预测的过滤器,即。Product1,但是我们不确定 xsl 文件将保存哪些数据,它可能类似于“Product1 (buy me)”这样的逻辑不会通过,并且记录将被忽略。
我们可以使用什么技术来匹配产品名称和过滤器?正则表达式、模式匹配等?还是我只需要拆分过滤器并循环遍历每个过滤器?似乎应该有一种更优雅的方式。
private static bool SkipRecord(string strFilters, string key, DataRow row)
{
//include the record if it matches our filter
var strField = row[key].ToString();
bool skip = true;
if (strField != null && strField != "")
{
skip = !strFilters.ToLower().Contains(strField.ToLower());
}
return skip;
}
List<ResultRow> xlsRows = new List<ResultRow>();
foreach (DataRow row in dataTable.Rows)
{
if (SkipRecord(f.brandFlag, "Brand", row) && SkipRecord(f.productFlag, "Name", row))
continue;
}
appSettings.json
"CustomSettings": {
"BrandFlag": "Gibson|Fender|Jackson",
"ProductFlag": "Product 1|ProductTwo|Product3",
}
解决方案
(先发表评论,我认为第一种方法缺少
return skip;
线)。
对于您提到的特定情况,如果您更改“包含”参数的顺序,它将起作用:
skip = !strField.ToLower().Contains(strFilters.ToLower());
推荐阅读
- xml - 出站的 XSLT 转换不起作用
- python - 如何使用嵌套循环创建多个文件
- django - 如何编写查询以获取用户选择选项的次数
- sql - 从 SQL Server 中的 txt 文件读取时批量插入显示 BOM 字符(∩╗┐)
- javascript - 如何在反应中使用 fetch 方法上传文件?
- c - C sscanf 验证输入格式
- visual-studio-code - VSCode 中的 jupyter markdown 字体
- pandas - 根据另一列中的值替换列中的值
- c - 如何在 C 中比较两个二维数组?
- android - Retrofit android - 没有响应也没有错误