0

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

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

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

请帮我。

4

3 回答 3

1

不,您必须先转换为字符串(另请参见此处的答案:Problem with conversion int to string in Linq to entity)。

在 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 列上的任何索引)。

于 2013-07-08T11:26:25.710 回答
0

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

于 2013-07-08T11:14:52.563 回答
0

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

var query = from c in ctx.Customers
            where SqlMethods.Like(c.IntegerPhoneNumber.ToString(), "555*")
            select c
于 2013-07-08T11:25:37.653 回答