我有一个 LINQ 查询,用于从 SQL 数据库中选择一些行。我的数据库中的每一行都代表一个物理空间的足迹,我试图只选择包含给定点的行。给我问题的查询部分如下:
LinqMetaData meta = new LinqMetaData(da);
var captures = (from c in meta.Capture
where
(c.TLLat.HasValue && lat < Math.Max(Math.Max(c.BLLat.Value, c.BRLat.Value), Math.Max(c.TLLat.Value, c.TRLat.Value)))
&&
(c.TLLat.HasValue && lat > Math.Min(Math.Min(c.BLLat.Value, c.BRLat.Value), Math.Min(c.TLLat.Value, c.TRLat.Value)))
select c);
当我运行代码时,我收到此错误:
二进制表达式 '(39.3237282094724 < Max(Max(EntityField(LPLA_1.BLLat AS BLLat), EntityField(LPLA_1.BRLat AS BRLat)), Max(EntityField(LPLA_1.TLLat AS TLLat), EntityField(LPLA_1.TRLat AS TRLat)) ))' 不能转换为谓词表达式。
我假设这意味着我不能在 LINQ 查询中使用 Math.Max() / Math.Min() ...这是正确的吗?
编辑:
我正在使用 LinqMetaData 进行查询,它来自 LLBLGen Pro c# 库。我认为 LINQ 的这种实现可能在其查询中不支持 Math.Max() / Math.Min()。