LINQ将字符串转换为datetime

时间:2011-02-22 09:14:53

标签: linq string datetime

在SQL中,我这样做:

DateMonth=convert(datetime, convert(char(6), AASI.Inv_Acctcur) + '01')

如何在LINQ中执行此操作?字符串采用以下格式:

"yyyyMMdd"

谢谢,
ILE

编辑:

SQL用法示例:

SELECT convert(datetime, '20161023', 112) -- yyyymmdd 

在此处找到:http://www.sqlusa.com/bestpractices/datetimeconversion/

2 个答案:

答案 0 :(得分:4)

This page on MSDN documentation列出LINQ to SQL不支持的所有转换方法。

那里没有列出

Convert.ToDateTime。所以,我猜你可以用Convert.ToDateTime做你想做的事。

答案 1 :(得分:2)

对于LINQ或任何LINQ over Expression树启用的提供程序(例如LINQ to SQL,LINQ to Entities,LINQ to NHibernate,LLBLGen Pro等等),这不是典型的事情。这只是一个语言问题。您想知道如何将格式yyyyMMdd转换为DateTime

诀窍是保留LINQ(通过表达式树)查询的转换OUT,因为LINQ提供程序将无法转换它,或者如果可以,您将获得特定于提供程序的实现。

因此,诀窍是将其作为字符串从数据库中删除(或者当然更好:更改数据库模型)并将其转换为.NET中的DateTime。例如:

// Doing .ToArray is essential, to ensure that the 
// query is executed right away.
string[] inMemoryCollectionStrings = (
    from item in db.Items
    where some_condition
    select item.Inv_Acctcur).ToArray();

// This next query does the translation from string to DateTime.
IEnumerable<DateTime> dates =
    from value in inMemoryCollectionStrings
    select DateTime.ParseExact(value, "yyyyMMdd", 
        CultureInfo.InvariantCulture);

换句话说,您可以使用以下行进行转换:

DateTime.ParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture);