vb.net - 删除 linq to 实体查询中带有数字的字段

标签 vb.net linq entity-framework

我有以下 linq 到实体查询

Dim results = (From t In ctx.events
               Where t.date >= dStartDate.Date And t.date <= dEndDate.Date
               Order By t.time
               Select New With {
                   t.symbol,
                   t.date, t.time,
                   t.description,
                   t.domestic_call_num,
                   t.web_url}).ToList()

我想限制返回结果,以便我只获得 t.symbol 值中不包含数字的结果。 我不确定如何实现这一点,因为我尝试过的方法不起作用

最佳答案

doesn't contain a number in its value

假设你的意思是:

  1. symbol 是一个字符串。
  2. 包含一个数字字符。

然后,如果这是在客户端上完成的)一个简单的正则表达式就可以工作:

Dim results = (From t In ctx.events
               Where t.date >= dStartDate.Date And t.date <= dEndDate.Date
               Where Not Regex.IsMatch(t.symbol, "\d")
               Order By t.time
               Select New With {
                 t.symbol,
                 t.date, t.time,
                 t.description,
                 t.domestic_call_num,
                 t.web_url
              }).ToList()

但是,这不太可能(EF 提供程序可以实现正则表达式)在客户端工作。接受一组特定的数字(例如,仅西方语言的阿拉伯数字)会使问题变得更容易:请参阅其他 answer .

服务器上更通用的解决方案可能取决于您正在使用的提供商的函数(或实体 SQL)的详细信息。除非过滤掉如此大比例的行,从而产生影响(要传输更多数据),否则混合解决方案是可能的。在服务器上进行尽可能多的过滤,然后在本地执行其余的操作(如果我的 VB 语法正确的话):

Dim results = (from s in (
                 From t In ctx.events
                 Where t.date >= dStartDate.Date And t.date <= dEndDate.Date
                 Order By t.time
                 Select New With {
                   t.symbol,
                   t.date, t.time,
                   t.description,
                   t.domestic_call_num,
                   t.web_url
                 }).ToEnumerable()
               Where Not Regex.IsMatch(s.symbol, "\d")
               Select s
              ).ToList()

关于vb.net - 删除 linq to 实体查询中带有数字的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16913046/

相关文章:

mysql - 在表单加载时在 ListView 中显示数据库中的数据

mysql - 参数化 SQL 查询

wpf - WebBrowser 无法正确显示内容

c# - 如何使用表达式设置属性值?

c# - Distinct 子句导致类型错误

c# - 从查询字符串开始时比较 EntitySQL 中的 DateTime 值

vb.net - 单击按钮->启动* .exe文件

c# - 将 IEnumerable 转换为属性列表

C# Entity Framework 未初始化数据库

c# - Entity Framework - 无法创建类型的常量值