【问题标题】:Like operator in Linq(For integer)Linq 中的 Like 运算符(对于整数)
【发布时间】:2013-07-08 10:59:33
【问题描述】:

在 Linq 中,我们对字符串使用 like 运算符

var query = from c in ctx.Customers
            where c.City.StartsWith("L") && c.City.Contains("n")
            select c

是否可以在 linq 中对整数应用 like 运算符。

请帮帮我。

【问题讨论】:

  • Like 如何处理整数?你真正想要完成什么?你能举例说明你希望如何将 Like 与整数一起使用吗?
  • @ChrisDunaway:实际上我正在尝试实现对 customerID 字段的实时搜索。

标签: vb.net linq entity-framework-4 sql-like


【解决方案1】:

没有。您必须先转换为字符串(另请参阅此处的答案:Problem with converting int to string in Linq to entities)。

在 SQL 中是这样的

DECLARE @StartsWith NVARCHAR
SET @StartsWith = '1'

SELECT * FROM Customers
WHERE (CAST CustomerId AS NVARCHAR(MAX)) LIKE @StartsWith + '%'

我想这应该在 LINQ 中工作:

var query = from c in ctx.Customers
            where SqlFunctions.StringConvert((Decimal)c.CustomerId).Startswith("1")
            select c;

请注意,如果您有一个大表,这将是一个缓慢的查询,因为它需要进行表扫描(不会使用 int 列上的任何索引)。

【讨论】:

    【解决方案2】:

    .Contains("/Integer/")) 您也可以使用 .StartsWith() 或 .EndsWith()。

    【讨论】:

      【解决方案3】:

      您可以将整数字段转换为字符串,然后使用SqlMethods.Like

      var query = from c in ctx.Customers
                  where SqlMethods.Like(c.IntegerPhoneNumber.ToString(), "555*")
                  select c
      

      【讨论】:

      • 这对我不起作用,出现异常说“LINQ to Entities 无法识别方法 'Boolean Like....”将尝试改用 eSQL。
      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 2021-12-24
      • 2011-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多