我有一个表达式
DateTime date = DateTime.Now;
Expression<Func<MyClass, bool>> exp = null;
我的目标应该是这样的
exp = x => x.Year > date.Year
但遗憾的是MyClass.Year字段是一个字符串,我需要解析它。当EF将值转换为sql时,我遇到Convert.ToInt32(x.Year)的问题。如何使用EF将int.Parse操作转换为正确的sql语句? 有没有办法做这样的事情?
exp = x =>
{
int val = int.Parse(x.Year);
return val > date.Year
}
有一个工作要做,只是为了正确编译它,但仍然在寻找另一种方式,EF不能将这些调用转换为sql:
private bool GetExpression(MyClass myClass, DateTime endDate)
{
int year = 0;
var res = int.TryParse(myClass.Year, out year);
if (res)
return year > endDate.Year;
return false;
}
exp = x => GetExpression(x, DateTime.Now)
答案 0 :(得分:-1)
您可以将变量更改为字符串并使用string.Compare
,如下所示:
DateTime date = DateTime.Now;
string dateString = date.ToString();
Expression<Func<MyClass, bool>> exp =
x => string.Compare(x.Year, dateString) > 0;
只要您的年份都是4个字符
,这将返回相同的结果