using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace OrmTest { public class UCustomConditionalFunc { public static void Init() { var conditionEmail = new ConditionalModel { FieldName = "Email", ConditionalType = ConditionalType.Like, FieldValue = "aaa" }; var conditionUserType = new ConditionalModel { FieldName = "UserType", FieldValue = "1", CustomConditionalFunc = new UserTypeConditionalFunc() }; var db = NewUnitTest.Db; Demo1(conditionEmail, conditionUserType, db); Demo2(conditionEmail, conditionUserType, db); Demo3(conditionEmail, conditionUserType, db); } private static void Demo1(ConditionalModel conditionEmail, ConditionalModel conditionUserType, SqlSugarClient db) { var conditions = new List(); conditions.Add(conditionEmail); conditions.Add(new ConditionalCollections { ConditionalList = new List> { new KeyValuePair(WhereType.And, conditionUserType) // 这里key用[Or|Null]都没用 } }); db.CodeFirst.InitTables(); var query = db.Queryable().Where(conditions, true).ToList(); } private static void Demo2(ConditionalModel conditionEmail, ConditionalModel conditionUserType, SqlSugarClient db) { var conditions = new List(); conditions.Add(conditionEmail); conditions.Add(new ConditionalCollections { ConditionalList = new List> { new KeyValuePair(WhereType.Or, conditionUserType) // 这里key用[Or|Null]都没用 } }); db.CodeFirst.InitTables(); var query = db.Queryable().Where(conditions, true).ToList(); } private static void Demo3(ConditionalModel conditionEmail, ConditionalModel conditionUserType, SqlSugarClient db) { var conditions = new List(); // conditions.Add(conditionEmail); conditions.Add(new ConditionalCollections { ConditionalList = new List> { new KeyValuePair(WhereType.And, conditionUserType) // 这里key用[Or|Null]都没用 } }); db.CodeFirst.InitTables(); var query = db.Queryable().Where(conditions, true).ToList(); } } [SugarTable("AppUseradfafa")] public class AppUser { public int Id { get; set; } public string Email { get; set; } public int UserType { get; set; } } public class UserTypeConditionalFunc : ICustomConditionalFunc { public KeyValuePair GetConditionalSql(ConditionalModel conditionalModel, int index) { var sql = $"UserType = {conditionalModel.FieldValue}"; return new KeyValuePair(sql, Array.Empty()); } } }