Where的Any Lambda條件支持
Yumitoya8569 opened this issue · comments
環境
.Net 7
Oracle 11g
SqlSugarCore 5.1.4.80
建議
以下3種寫法,目前僅2會通過, 也就是說清單必須是匿名類
var list = new List<string> { "a", "b", "c" };
var query = _db.Queryable<MyTable1>()
.Where(a => list.Any(s => s == a.col));
var list = new List<string> { "a", "b", "c" };
var tmpList = list.Select(x => new { col = x }).ToList();
var query = _db.Queryable<MyTable1>()
.Where(a => tmpList.Any(s => s.col == a.col));
var list = new List<string> { "a", "b", "c" };
var tmpList = list.Select(x => new Test1 { col = x }).ToList();
var query = _db.Queryable<MyTable1>()
.Where(a => tmpList.Any(s => s.col == a.col));
請問是否有機會至少支持1的寫法?
目的是想用Any配合Contains達成InLike的效果
var list = new List<string> { "a", "b", "c" };
var query = _db.Queryable<MyTable1>()
.Where(a => list .Contains(a.Id)).ToList();
普通in用法 id in (a,b,c)
var list = new List<string> { "a", "b", "c" };
var tmpList = list.Select(x => new { col = x }).ToList();
var query = db.Queryable<Order>()
.Where(a => tmpList.Any(s => a.Name.Contains(s.col))).ToList();
in like 可以这样 (name like a ) or (name like b) or (name like c)
謝謝, 我了解這種寫法
不過實際上清單有很多而且應用在不同報表上
每個清單要轉換一層匿名類, 代碼邏輯上會有點詭異
所以想了解(1)的寫法有機會支援嗎?
好的我尽快支持,预计这周完成
SqlSugarCore 5.1.4.82-preview04 最新预览版本或者源码已支持可以试用
var list1 = new List<string> { "a", "b", "c" };
var query = db.Queryable<Order>()
.Where(a => list1.Any(s => a.Name.Contains(s))).ToList();
謝謝, 我會找時間更新測試
可以了吗?
環境
SqlSugarCore 5.1.4.83
驗證
以下執行結果sql param只被帶入1組且值是1
var list = new List<string>() { "A", "C" };
var query = await _db.Queryable<MyTable1>()
.Where(a => list.Any(s => a.code.Contains(s))).ToListAsync();
實際 OnLogExecuted Ouput
#SQL=
SELECT "CODE","NAME" FROM "MyTable1" "A" WHERE ( ("A"."CODE" like '%'||:MethodConst1||'%') OR ("A"."CODE" like '%'||:MethodConst1||'%') )
#PARAMS=
[:MethodConst1, 1]
預期 OnLogExecuted Ouput
#SQL=
SELECT "CODE","NAME" FROM "MyTable1" "A" WHERE ( ("A"."CODE" like '%'||:MethodConst0||'%') OR ("A"."CODE" like '%'||:MethodConst1||'%') )
#PARAMS=
[:MethodConst0, A], [:MethodConst1, C]
SqlSugarCore 5.1.4.84-preview03
更新到最新预览版本已修复,Oracle和达梦 下的问题
84正式版預計什麼時候會發布?
發布後我會再找時間驗證
你可以用预览版本测试,正试测今天晚上发布
搜索时勾一下预览
已发布,还有问题发新的issue
環境
SqlSugarCore 5.1.4.84
驗證
var list = new List<string>() { "A", "C" };
var query = await _db.Queryable<MyTable1>()
.Where(a => list.Any(s => a.code.Contains(s))).ToListAsync();
實際 OnLogExecuted Ouput
#SQL=
SELECT "CODE","NAME" FROM "MyTable1" "A" WHERE ( ("A"."CODE" like '%'|| 'A' ||'%') OR ("A"."CODE" like '%'|| 'C' ||'%') )
#PARAMS=
[:MethodConst1, 1]
@DotNetNext
執行結果對了, 只是多了一個 [:MethodConst1, 1] 的參數, 不知道會不會影響複雜查詢的情況?
目前放棄參數化查詢是因為實作上的考量嗎?
后面版本会修化,暂时对使用无影响