之前處理數據我有一個表達的表達式樹需要返回
DateTime date = DateTime.Now;
Expression<Func<MyClass, bool>> exp = null;
我的目標應該是這樣的
exp = x => x.Year > date.Year
可惜MyClass.Year領域是一個字符串,我需要解析它。在EF將值轉換爲sql時,我遇到了Convert.ToInt32(x.Year)的問題。如何將int.Parse操作轉換爲EF正確的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)
與'x => int.Parse(x.Year)> date.Year'有什麼不同?你有沒有嘗試過'(int)x.Year'?另外,不要扮演魔鬼的擁護者,但是幾年應該按照字符串順序排列,至少在我們達到10000年之前。 – Luaan
'SqlFunctions :: StringConvert' –
我嘗試了兩個部分,我把年份命名爲字段,可以是金額。事情是當我試圖使用這樣的事情是失敗exp = x => Convert.ToInt32(x.Year)> = startDate.Year。然後我懷疑如何在LINQ語句中做到這一點 – Zinov