【问题标题】:Remove leading characters in string with linq to entities使用 linq 删除字符串中的前导字符到实体
【发布时间】:2014-01-07 23:06:02
【问题描述】:

我需要从字符串中删除前导零。我正在尝试在 linq to entity 查询中使用TrimStart('0'),但它不受支持。我找到了this related question,但该解决方案对我不起作用,它说也不支持该功能。有什么建议?谢谢!

更新:使用 Sql Server,这就是我使用它的方式...

Where(c => c.StringToGet.Substring(SqlFunctions.PatIndex("%[^0]%", c.StringToGet).Value - 1) == stringToCompare)

错误... LINQ to Entities 无法识别方法 'System.Nullable`1[System.Int32] PatIndex(System.String, System.String)' 方法,并且此方法无法转换为存储表达式。

【问题讨论】:

  • 你使用什么数据库?如果您使用SqlFunctions.PatIndex如何您如何使用它,确切的错误是什么?
  • 好吧,如果你必须这样做,客户端用前导零获取它们,然后在本地修剪它们。如果您将它们拉到一个类中,另一个选择是简单地向它添加一个 trimleadingzeros 方法。

标签: c# entity-framework linq-to-entities


【解决方案1】:

首先对您的查询执行 ToList()。那么你就可以使用 Trim 了,因为它不再是 sql 操作了。

【讨论】:

  • 如果TRIM() 应该在WHERE 子句中使用,您不希望这样做,因为它会下载整个表并在客户端进行过滤。
  • 是的,理想情况下我会在数据库端执行此操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
  • 2019-12-27
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多