LINQ to SQL:如何编写" Like"选择?

时间:2020-03-06 14:20:59  来源:igfitidea点击:

我有以下SQL:

select * from transaction_log where stoptime like '%2008%'

如何用LINQ to SQL语法编写此代码?

解决方案

如果要使用文字方法,则如下所示:

var query = from l in transaction_log
            where SqlMethods.Like(l.stoptime, "%2008%")
            select l;

另一个选择是:

var query = from l in transaction_log
        where l.stoptime.Contains("2008")
        select l;

如果是DateTime:

var query = from l in transaction_log
        where l.stoptime.Year = 2008
        select l;

该方法位于System.Data.Linq.SqlClient命名空间中

from x in context.Table where x.Contains("2008") select x

如果停止时间数据类型为字符串,则可以使用.Contains()函数以及.StartsWith()和.EndsWith()。

如果我们使用contains to方法,那么我们正在执行类似'%somestring%'的操作。如果使用startswith方法,则它与" somestring%"相同。最后,endswith与使用'%somestring'相同。

总而言之,contains将在字符串中找到任何模式,但startswith和endswith将在单词的开头和结尾查找匹配项。

真正有趣的一点是,当我们在上下文中使用" from x"时,.NET会创建诸如" Select * from table from name like'%test%'"之类的查询。令人印象深刻

谢谢-好的答案。

实际上,这是一个DateTime类型。我不得不将" stoptime"键入为:

var query = from p in dbTransSummary.Transaction_Logs
    where ( (DateTime) p.StopTime).Year == dtRollUpDate.Year
    select

次要点。效果很好!