我尝试通过以下方式传递对象列表,每个对象包含三个参数:变量名、操作符和值。
public async Task<ActionResult> GetAPIData([FromQuery] Condition[] conditions)
其中 Condition
类定义如下:
public class Condition
{
public string variable { get; set; }
public string op { get; set; }
public double value { get; set; }
}
但我无法成功传递这些项目,每次调用API时,“conditions”都是空的。
生成的URL虽然有些杂乱,但Swagger提供了这样的示例:
http://localhost:5001/api/datatable?conditions=%7B%22variable%22%3A%22vara%22%2C%22op%22%3A%22%3E%22%2C%22value%22%3A20%7D&conditions=%7B%22variable%22%3A%22varb%22%2C%22op%22%3A%22%3E%22%2C%22value%22%3A10%7D
在我的代码中,我尝试遍历 conditions
,根据每个条件动态构建查询,但因为 conditions
是空的,所以 filteredData
最终返回的是未经筛选的整个数据集。
var t = conditions.Length;
IQueryable<ScreenerData> query = _context.datatable;
// 遍历条件并应用到查询中...
var filteredData = await query.Where(data => data.Data != null)
.Select(data => data.Id)
.ToListAsync();
问题在于,尽管我按照预期构造了URL和方法签名,conditions
参数在API调用时始终为空,导致无法正确执行过滤逻辑。