像Linq中的运算符(For integer)

时间:2013-07-08 10:59:33

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

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

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

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

请帮帮我。

3 个答案:

答案 0 :(得分: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列上的任何索引)。

答案 1 :(得分:0)

。载( “/整数/”)) 您也可以使用.StartsWith()或.EndsWith()。

答案 2 :(得分:0)

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

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