c# - Entity Framework Core - 按值列表过滤
问题描述
我正在寻找一种方法来基于 EF Core 中的过滤器列表使用连接的 OR 语句来实现 SQL 查询。在 SQL 中,它看起来就像:
SELECT *
FROM Table
WHERE (ColA = 'filterForA1' AND ColB = 'filterForB1') OR [...] OR (ColA = 'filterForAx' AND ColB = 'filterForBx')
因此,获取 SQL 查询并执行它的一种天真的方法FromSqlRaw
是:
string sqlFilter = "";
bool first = true;
foreach (var filterSet in filterSets) {
if (!first) { sqlFilter += "OR" } else { first = false; }
sqlFilter += $"(ColA = '{filterSet.A}' AND ColB = '{filterSet.B}')";
}
但这会使代码容易受到注入的影响,所以我想知道是否有更好的解决方案来处理 EF Core 中的过滤器列表?
编辑:LINQ 查询也是一个很好的解决方案。但我不知道如何使用 LINQ 来做到这一点。所以上面的 SQL 查询只是结果应该是什么样子的示例。
解决方案
推荐阅读
- plc - 从电能表获取值到施耐德 PLC
- html - '(fg: FormGroup) => { notmatched: boolean; 类型的参数 }' 不可分配给类型参数
- visual-studio-code - 带有招摇文件的VScode下载问题
- python - 使用vtk(python)的基本问题“分段线性曲线”
- ios - iOS:imageFlippedForRightToLeftLayoutDirection 不适用于 GIF 图像
- javascript - 获取 HTMLCollection 的某个属性
- regex - 在正则表达式值中获取错误以从日志中提取值
- php - 警告:[pool www] 似乎很忙(您可能需要增加 pm.start_servers 或 pm.min/max_spare_servers)|| pm.min/max_spare_servers
- python - 如何使我在 tkinter 中的标签集中?
- apache-kafka - Kafka Streams with SpecificAvroSerde:如何配置反序列化异常处理程序