Where的Lambda條件強化
Yumitoya8569 opened this issue · comments
Yumitoya8569 commented
環境
.Net 7
Oracle 11g
SqlSugarCore 5.1.4.88
驗證
定義
public class DateRange
{
public DateTime From { get; set; }
public DateTime To { get; set; }
}
public class MyObj
{
public List<DateRange> dateRanges { get; set; }
}
public class TableA
{
[SugarColumn(IsPrimaryKey = true)]
public string id { get; set; } = string.Empty;
public string name { get; set; } = string.Empty;
public DateTime? create_utc { get; set; } = DateTime.UtcNow;
}
情境1
var list = new List<DateRange>();
list.Add(new DateRange { From = DateTime.Now.AddDays(-1), To = DateTime.Now.AddDays(0) });
list.Add(new DateRange { From = DateTime.Now.AddDays(-3), To = DateTime.Now.AddDays(-2) });
_sysDb.Queryable<TableA>().Where(a => list.Any(p => a.create_utc >= p.From && a.create_utc <= p.To)).ToList()
情境2
var list = new List<DateRange>();
list.Add(new DateRange { From = DateTime.Now.AddDays(-1), To = DateTime.Now.AddDays(0) });
list.Add(new DateRange { From = DateTime.Now.AddDays(-3), To = DateTime.Now.AddDays(-2) });
var obj = new MyObj { dateRanges = list };
_sysDb.Queryable<TableA>().Where(a => obj.dateRanges.Any(p => a.create_utc >= p.From && a.create_utc <= p.To)).ToList()
問題
延伸自#1154, 上述情境1跟情境2的操作目前皆會翻車, 且為不同類型錯誤
情境1: p.From 與 p.To 會直接被帶入語法中, 無法識別
情境2: p.From 與 p.To 被解讀為以下格式cast('2023-07-20 17:59:42.755' as TIMESTAMP)
, 出現錯誤 "ORA-01843: 不是有效的月份"
*create_utc在Oracle上的型別為Date
果糖网 commented
SqlSugarCore 5.1.4.92-preview16
已修复,还有问题发新issue