【发布时间】:2016-06-08 22:37:03
【问题描述】:
我收到此错误"could not determine data type of parameter $1"
我得到错误的 where 子句如下所示:
var result = from Table in model.Table
where (filter.XId.HasValue ? Table.XId == filter.XId: true)
select new TableEntity
{
ID = Table.XId
};
如果我的代码只是这样的“Table.X == filter.X”,它可以工作...... 我该如何解决这个问题?
我只在 PostgreSQL 数据库中遇到这个问题......
【问题讨论】:
-
将该条件替换为“filter.X == Table.X || filter.X == null”
-
@Evk 我只想添加这个条件,如果进入方法的过滤器有一个值,我将过滤表值,如果我写了 Table.X == filter.X I如果 filter.X 为空,将会得到错误的值 ....
-
这不是它的工作方式。实际上,您当前的语句将被转换为非常丑陋且长的 SQL 条件(您可以自己检查)。我提议的语句将获得完全相同的结果(如果 filter 为 null,它将被忽略)但语句不那么丑陋,并且(也许,没有检查)它也可以在 PostgreSQL 上正常工作。如果您不想包含条件 at all if filter 为 null - 检查它是否为 null before Where 语句,而不是在其中。
-
@Evk 如果我确实喜欢这个“filter.X == Table.X || filter.X == null”,如果我的过滤器这样做,我不会得到 x == null 的表值没有价值
-
不,此条件与您的完全相同 - 如果 filter.X 为空 - 忽略条件(您的语句中的“:true”部分)。顺便说一句,postgre没有错误有帮助吗?
标签: c# linq postgresql