Функция Entity SQL DateDiff - PullRequest
       1

Функция Entity SQL DateDiff

2 голосов
/ 11 декабря 2011

II выбор сборки и где условие против класса ObjectSet объекта, используя
ObjectQuery.

  ObjectQuery<DbDataRecord> query = context.TestEnt.Select("it.BuySell, "
                        + "it.DepoTerm").Where("Datediff(day,it.RunDateTime,'22-11-2012')=0" );

                var a = query.ToList();
                foreach (var tmp in a)
                {
                    Console.WriteLine(tmp["BuySell"].ToString());
                }

Я хотел бы использовать функцию datediff в моем выражении where, Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 11 декабря 2011

Попробуйте это:

var query = context.TestEnt
                   .Where("DiffDays(it.RunDateTime,'22-11-2012')=0" );
                   .Select("it.BuySell, it.DepoTerm")

Возможно, вам придется вызывать CreateDataTime для передаваемых данных, чтобы это работало. Здесь - список всех поддерживаемых функций даты в ESQL.

Вы также можете использовать Linq-to-entity:

var query = context.TestEnt
                   .Where(x => SqlFunctions.DateDiff("day", x.RunDateTime,'22-11-2012') == 0)
                   .Select(x => new { x.BuySell, x.DepoTerm }); 
0 голосов
/ 13 марта 2013

Функция ESQL DiffDays работает, но сделать ее правильно - непросто.Вы должны привести строку к DateTime;однако, поскольку текст преобразуется в SQL с использованием метода CreateQuery<>, необходимо привести к System.DateTime, иначе запрос не будет выполнен во время выполнения.

Попробуйте выполнить следующее:

ObjectQuery<DbDataRecord> query = context.TestEnt.Select("it.BuySell, it.DepoTerm")
    .Where("DiffDays(it.[RunDateTime],cast('22-11-2012' as System.DateTime))=0");

var a = query.ToList();
foreach (var tmp in a)
{
    Console.WriteLine(tmp["BuySell"].ToString());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...