有人知道LINQ to SQL查询语法中ISDATE()的等价物吗?我在SQL中有一个varchar字段,它包含日期,我需要过滤掉非日期行。
希望是这样的:
var query = SomeDataContext;
query = from p in query
where p.ISDATE(field1) == true;
select p;另外,如何在Linq语法中为SQL转换一些内容?
CAST(SomeDate AS SMALLDATETIME)发布于 2009-03-03 19:02:31
执行此操作的技巧是在数据库中创建一个用户函数,该函数仅在返回值时调用ISDATE
CREATE FUNCTION My_ISDATE(@maybeDate varchar(max))
returns bit
as return ISDATE(@maybeDate);然后将My_IsDate添加到数据库上下文中,并在查询中使用它:
var db = SomeDataContext;
var query = from p in db.MyTable
where db.My_ISDATE(p.field1)
select p;发布于 2009-03-03 17:30:00
我认为在使用LINQ to SQL时没有映射到ISDATE的扩展方法。
如果您可以加载所有数据,然后在客户端空间中进行过滤,那么在字段上使用TryParse并与日期进行比较。
否则,我将创建一个存储过程,它将返回您需要的数据(以便您可以使用ISDATE),然后通过上下文执行该存储过程。
此外,您使用ISDATE的语法也不正确。ISDATE只会告诉您表达式是否为有效的日期格式。您的查询将如下所示:
var query = SomeDataContext;
query = from p in query
where ISDATE(field1) != 0 && CONVERT(datetime, field1) > some date
select p;语法无效,但它可以让您了解如何形成查询。
发布于 2009-03-03 17:56:36
看起来你能做到。链接:
http://msdn.microsoft.com/en-us/library/bb386973.aspx
这可能会有帮助,但我还没有看过:
http://mtaulty.com/videos/nuggets/l2s/15_mt_l2s_callingsqlfunctions.wmv
完整列表如下:
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/05/10/9322.aspx
https://stackoverflow.com/questions/607312
复制相似问题