【问题标题】:servicestack.ormlite sql.in not supporting empty listsservicestack.ormlite sql.in 不支持空列表
【发布时间】:2015-11-13 06:07:54
【问题描述】:

github 上有一个合并,表明 sql.in 现在支持空列表而不是生成无效的 sql,但它不适用于我 (SS v4)。

var list = new List<string>(); //this empty list should indicate "return all"
var orders = db.Select<Order>(o => Sql.In(o.Status, list));

来自this的链接,好像已经实现了,但是我还是得到如下SQL:

SELECT "OrderID", "Status"
FROM "Order"
WHERE "PaymentStatus" In ()

我错过了什么吗?

G

【问题讨论】:

  • 它似乎在v4 master 中。但尚未测试,但看起来应该可以工作。
  • 您好,您对此有什么发现吗,我在 4.0.30 版本中遇到了同样的问题
  • 据我所知,我只是添加了一个 if 来处理空列表:orders = orderIds != null ? conn.Select&lt;T&gt;(d =&gt; d.AccountId == accountID &amp;&amp; !d.Deleted &amp;&amp; Sql.In(d.Id, orderIds)) : conn.Select&lt;T&gt;(d =&gt; d.AccountId == accountID &amp;&amp; !d.Deleted);

标签: servicestack ormlite-servicestack


【解决方案1】:

另一种解决方案可以是 你可以使用常规的 Linq 查询来处理它

服务栈 API

outputQuery= db.Select<DTOName>(x => x.Where(r => Sql.In(r.listId, anyList)));

更改上述查询以支持空列表 Linq 查询

outputQuery= db.Select<DTOName>().Where(s => anyList.Contains(s.listId))

if(profiles) var outputQueryWithNoerror = outputQuery.ToList();

【讨论】:

  • 但这是可怕的代码,从数据库中加载了很多内容。有没有更好的解决方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多