Entity 4.0 Casting Value As DateTime - PullRequest
       52

Entity 4.0 Casting Value As DateTime

1 голос
/ 03 декабря 2010

LINQ для Entity Framework 4.0. SQL Server.

Я пытаюсь вернуть список объектов, и один из столбцов в базе данных - varchar (255) и содержит даты. Я пытаюсь привести значение к datetime, но пока не нашел решения.

Пример:

    List<MyObject> objects = (from c in context.my_table
                              where c.field_id == 10
                              select new MyObject()
                              {
                                  MyDate = c.value // This is varchar, want it to be datetime
                              }).ToList();

Разве это не возможно?

Обновление. Это LINQ to Entity. При попытке конвертировать в DateTime я получаю:

LINQ to Entities does not recognize the method 'System.DateTime ToDateTime(System.String)' method, and this method cannot be translated into a store expression.

Ответы [ 5 ]

1 голос
/ 27 августа 2011

Ответ в настоящее время невозможен с Entity Framework.С самой LINQ это просто не поддерживается Entity Framework.

0 голосов
/ 25 января 2012

вы можете преобразовать в список, а затем применить преобразование ... обратная сторона - когда вы вызываете .ToList(), это принесет все данные из базы данных, а затем выполнит преобразование на стороне хоста, а не на стороне базы данных. В этом случае все будет в порядке, но в других случаях, когда вы используете это преобразование для фильтра, будет дорогостоящим. Вот ваш модифицированный образец:

 List<MyObject> objects = (from c in context.my_table
                          where c.field_id == 10).ToList().
                          Select(c=>new MyObject()
                          {
                              MyDate = Convert.ToDateTime(c.value)
                          }).ToList();

Блог: http://jaider.net

0 голосов
/ 03 декабря 2010

вы можете сделать это Date = DateTime.Parse (текст)

0 голосов
/ 03 декабря 2010

читать , и лучшая ставка будет использовать ваш результат, а затем конвертировать в дату и время. Как ниже,

 static void Main(string[] args)
     {
        Console.WriteLine(getme());
        Console.ReadLine(); 
    }
    private static DateTime  getme()
    {
        List<string> ss = new List<string>();
        ss.Add("11/11/2010");
        var r = from l in ss
                select new { date = Convert.ToDateTime(l) };



        return r.FirstOrDefault().date;

    }
0 голосов
/ 03 декабря 2010

Требуется DateTime.Parse (c.value), который будет брать строку, содержащую дату, и создавать из нее объект DateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...