【发布时间】:2023-04-08 00:08:01
【问题描述】:
我有一个 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
我假设这意味着我不能在 LINQ 查询中使用 Math.Max() / Math.Min()...这是正确的吗?
编辑:
我使用 LinqMetaData 进行查询,它来自 LLBLGen Pro c# 库。我认为 LINQ 的这种实现可能在其查询中不支持 Math.Max() / Math.Min()。
【问题讨论】:
-
这一切都取决于底层提供者。您需要查看它的文档以找到它可以表达的适当方法。
-
@asawyer 我在我的问题中添加了一些额外的信息。但就您所说的而言,我认为问题可能出在我正在运行 LINQ 查询的库上。
-
@asawyer 随意张贴作为答案,我会给你信用——你是对的
标签: c# linq llblgenpro llblgen