使用EdmFunction c#将字符串转换为datetime

时间:2012-04-19 01:43:52

标签: c# entity-framework linq-to-entities edmx

我有问题。我不能用edmfunction转换这种格式的字符串(dd / mm / yyyy)。 所以(mm / dd / yyyy)我可以。

我的机器文化是葡萄牙语BR。

请看下面的例子:

class Program
{
    [EdmFunction("testeModel", "ConvertToDateTime")]
    public static DateTime  ConvertToDateTime(table table)
    {
        throw new NotSupportedException();
    }

    static void Main(string[] args)
    {
        var date = DateTime.Now.Date;

        using (testeEntities t = new testeEntities())
        {
            var values = t.tables.Where(a => ConvertToDateTime(a) == date);

            foreach (var value in values)
            {
                Console.WriteLine(value.nome);
            }
        }

        Console.ReadKey();
    }

<Function Name="ConvertToDateTime" ReturnType="Edm.DateTime" >
      <Parameter Name="t" Type="testeModel.table" />
        <DefiningExpression>
         cast(t.date as DateTime)
        </DefiningExpression>
    </Function>

我的样本值:  04/18/2012 - 好的  18/04/2012 - 失败

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,演员表最终被翻译成SQL,因此您应该设置服务器以正确处理此字符串,即SET DATEFORMAT

但是还要考虑到这个演员将在每一行完成并且可能会很慢。最好找到存储值的其他方法(提前解析,存储为YYYY-MM-DD)或以不同方式写出相等。