Здравствуйте, Alexandr Sulimov, Вы писали:
AS>Как привести DateTime1 к Nullable<DateTime> чтобы небыло Convert
AS>получился аналог SqlFunctions.DatePart("yyyy", x.DateTime1) == 2014
Странно, у меня вроде сработало:
// так, кстати, гораздо удобнее получать нужный MethodInfo
var sqlFunctions = ((Func<string, DateTime?, int?>) SqlFunctions.DatePart).Method;
var exprY = Expression.Call
(
sqlFunctions,
Expression.Constant("yyyy"),
Expression.Convert(memberExp, typeof(DateTime?))
);
var constructedWhereExp = Expression.Equal
(
exprY,
Expression.Convert(Expression.Constant(2014), typeof(int?))
);
var whereLambda = Expression.Lambda<Func<MyEntity, bool>>(constructedWhereExp, paramExp);
var q = GetEntities().Where(whereLambda);
foreach (var en in q)
{
Console.WriteLine(en.DateTime1);
}
Может, Вы выделенный Convert забыли? 2014 тоже нужно к Nullable<int> приводить.
Или, может, опять не тот MethodInfo?