Closed mrreddevil2412 closed 1 year ago
Where("name COLLATE SQL_Latin1_General_CP1_CI_AS like @p",new { p="%"+keywork+"%"})
Or extend sqlfunc method
public class Demo
{
public static SqlSugarClient GetDb()
{
//Create ext method
var expMethods = new List<SqlFuncExternal>();
expMethods.Add(new SqlFuncExternal()
{
UniqueMethodName = "MyToString",
MethodValue = (expInfo, dbType, expContext) =>
{
if(dbType==DbType.SqlServer)
return string.Format("CAST({0} AS VARCHAR(MAX))", expInfo.Args[0].MemberName);
else
throw new Exception("未实现");
}
});
var config = new ConnectionConfig()
{
ConnectionString = Config.ConnectionString,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
ConfigureExternalServices = new ConfigureExternalServices()
{
SqlFuncServices = expMethods//set ext method
}
};
SqlSugarClient db = new SqlSugarClient(config);
return db;
}
public static string MyToString<T>(T str)
{
//这里不能写任何实现代码,需要在上面的配置中实现
throw new NotSupportedException("Can only be used in expressions");
}
public static void Init()
{
var db = GetDb();
var list = db.Queryable<Student>()
.Where(it => MyToString(it.Id) == "1302583").ToList();
//生成的Sql CAST([Id] AS VARCHAR(MAX))
}
}
Thanks! I used way where(string) easy 👍👍👍
Hello bro! I have query with keyword by Vietnamese. When I select not use " COLLATE SQL_Latin1_General_CP1_CI_AS " then => data =null
USE COLLATE SQL_Latin1_General_CP1_CI_AS => data not null