SQLite EF Core 提供程序的函数映射

此页面说明使用 SQLite 提供程序时,哪些 .NET 成员转换成哪些 SQL 函数。

聚合函数

.NET SQL
群。Average(x => x.Property) AVG(Property)
群。Average(x => x.DecimalProperty) ef_avg(DecimalProperty) EF Core 9.0
group.Count() COUNT(*)
group.LongCount() COUNT(*)
群。Max(x => x.Property) MAX(Property)
群。Min(x => x.Property) MIN(Property)
群。Sum(x => x.Property) SUM(Property)
群组.Sum(x => x.DecimalProperty) ef_sum(DecimalProperty) EF Core 9.0
字符串。Concat(group.Select(x => x.Property)) group_concat(属性,“”)
字符串。Join(分隔符、组)。Select(x => x.Property)) group_concat(属性, @separator)

二进制函数

.NET SQL
bytes.Contains(value) instr(@bytes,char(@value)) > 0
bytes.Length length(@bytes)
bytes.SequenceEqual(second) @bytes = @second
EF.Functions.Hex(bytes) hex(@bytes)
EF.Functions.Substr(bytes,startIndex) substr(@bytes, @startIndex)
英 孚。Functions.Substr(bytes, startIndex, length) substr(@bytes,@startIndex, @length))
EF.Functions.Unhex(value) unhex(@value)
英 孚。Functions.Unhex(value, ignoreChars) unhex(@value, @ignoreChars)

转换函数

.NET SQL
boolValue.ToString() CAST(@boolValue AS TEXT)
byteValue.ToString() CAST(@byteValue AS TEXT)
bytes.ToString() CAST(@bytes AS TEXT)
charValue.ToString() CAST(@charValue AS TEXT)
dateTime.ToString() CAST(@dateTime AS TEXT)
dateTimeOffset.ToString() CAST(@dateTimeOffset AS TEXT)
decimalValue.ToString() CAST(@decimalValue AS TEXT)
doubleValue.ToString() CAST(@doubleValue AS TEXT) // 将@doubleValue转换为文本
floatValue.ToString() CAST(@floatValue AS TEXT)
guid.ToString() CAST(@guid AS TEXT)
intValue.ToString() CAST(@intValue AS TEXT)
longValue.ToString() CAST(@longValue AS TEXT)
sbyteValue.ToString() CAST(@sbyteValue AS TEXT)
shortValue.ToString() CAST(@shortValue AS TEXT)
timeSpan.ToString() CAST(@timeSpan AS TEXT)
uintValue.ToString() CAST(@uintValue AS TEXT)
ushortValue.ToString() CAST(@ushortValue AS TEXT)

日期和时间函数

.NET SQL
dateOnly.AddDays(value) date(@dateOnly、 @value ||'days')
dateOnly.AddMonths(months) date(@dateOnly、 @months ||'month')
dateOnly.AddYears(value) date(@dateOnly、 @value ||'years')
dateOnly.Day strftime(“%d”, @dateOnly)
dateOnly.DayOfWeek strftime(“%w”, @dateOnly)
dateOnly.DayOfYear strftime(“%j”, @dateOnly)
DateOnly.FromDateTime(dateTime) date(@dateTime)
dateOnly.Month strftime(“%m”, @dateOnly)
dateOnly.Year strftime(“%Y”, @dateOnly)
dateOnly.DayNumber CAST(julianday(@dateOnly) - julianday('0001-01-01') AS INTEGER) EF Core 10.0
DateTime.Now datetime('now', 'localtime')
DateTime.Today datetime('now', 'localtime', 'start of day')
DateTime.UtcNow datetime('now')
dateTime.AddDays(value) datetime(@dateTime, @value ||'days')
dateTime.AddHours(value) datetime(@dateTime, @d ||'小时')
dateTime.AddMilliseconds(value) datetime(@dateTime,(@value / 1000.0) ||'seconds')
dateTime.AddMinutes(value) datetime(@dateTime,@value || '分钟')
dateTime.AddMonths(months) datetime(@dateTime, @months || '个月')
dateTime.AddSeconds(value) datetime(@dateTime,@value || '秒')
dateTime.AddTicks(value) datetime(@dateTime,(@value / 10000000.0) ||'seconds')
dateTime.AddYears(value) datetime(@dateTime,@value || '年')
dateTime.Date datetime(@dateTime,“开始日期”)
dateTime.Day strftime(“%d”, @dateTime)
dateTime.DayOfWeek strftime(“%w”, @dateTime)
dateTime.DayOfYear strftime(“%j”, @dateTime)
dateTime.Hour strftime(“%H”, @dateTime)
dateTime.Millisecond (strftime('%f', @dateTime) * 1000) % 1000
dateTime.Minute strftime(“%M”, @dateTime)
dateTime.Month strftime(“%m”, @dateTime)
dateTime.Second strftime(“%S”, @dateTime)
dateTime.Ticks (julianday(@dateTime) - julianday('0001-01-01 00:00:00')) * 86400000000
dateTime.TimeOfDay time(@dateTime)
dateTime.Year strftime(“%Y”, @dateTime)

注意

为便于说明,部分 SQL 进行了简化。 实际的 SQL 更复杂,可以处理更广泛的值。

数值函数

.NET SQL
-decimalValue ef_negate(@decimalValue)
decimalValue - d ef_add(@decimalValue、ef_negate(@d)
decimalValue * d ef_multiply(@decimalValue, @d)
decimalValue / d ef_divide(@decimalValue, @d)
decimalValue % d ef_mod(@decimalValue, @d)
decimalValue + d ef_add(@decimalValue, @d)
decimalValue < d ef_compare(@decimalValue,@d)< 0)
decimalValue <= d ef_compare(@decimalValue, @d)<= 0
decimalValue > d ef_compare(@decimalValue,@d)> 0)
decimalValue >= d ef_compare(@decimalValue, @d)>= 0
double.DegreesToRadians(degrees) radians(@degrees)
double.RadiansToDegrees(radians) degrees(@dradians)
doubleValue % d mod(@doubleValue, @d)
EF.Functions.Random() abs(random() / 9223372036854780000.0)
Math.Abs(value) abs(@value)
Math.Acos(value) acos(@value)
Math.Acosh(d) acosh(@d)
Math.Asin(d) asin(@d)
Math.Asinh(d) asinh(@d)
Math.Atan(d) atan(@d)
Math.Atan2(y,x) atan2(@y, @x)
Math.Atanh(d) atanh(@d)
Math.Ceiling(d) ceiling(@d)
Math.Cos(d) cos(@d)
Math.Cosh(value) cosh(@value)
Math.Exp(d) exp(@d)
Math.Floor(d) floor(@d)
Math.Log(d) ln(@d) EF Core 8.0
Math.Log(a, newBase) log(@newBase, @a) EF Core 8.0
Math.Log2(x) log2(@x) EF Core 8.0
Math.Log10(d) log10(@d) EF Core 8.0
Math.Max(val1,val2) max(@val1, @val2)
Math.Min(val1,val2) min(@val1, @val2)
Math.Pow(x, y) pow(@x, @y)) EF Core 8.0
Math.Round(d) round(@d)
Math.Round(d,小数位数) round(@d, @digits)
Math.Sign(d) sign(@d) EF Core 8.0
Math.Sin(a) sin(@a) EF Core 8.0
Math.Sinh(value) sinh(@value) EF Core 8.0
Math.Sqrt(d) sqrt(@d) EF Core 8.0
Math.Tan(a) tan(@a) EF Core 8.0
Math.Tanh(value) tanh(@value) EF Core 8.0
Math.Truncate(d) trunc(@d) EF Core 8.0

提示

除了此处列出的方法外,还将转换相应的泛型数学实现和 MathF 方法。 例如,Math.SinMathF.Sindouble.Sinfloat.Sin 全部映射到 SQL 中的 sin 函数。

提示

EF Core 创建带有 ef_ 前缀的 SQL 函数。

字符串函数

.NET SQL
char.ToLower(c) lower(@c)
char.ToUpper(c) upper(@c)
EF.Functions.Collate(操作数, 排序规则) @operand 整理 @collation
EF.Functions.Glob(matchExpression,pattern) @matchExpression GLOB @pattern
EF.Functions.Like(matchExpression,pattern) @matchExpression 喜欢 @pattern
英 孚。Functions.Like(matchExpression, pattern, escapeCharacter) @matchExpression LIKE @pattern ESCAPE @escapeCharacter
Regex.IsMatch(输入,模式) @input REGEXP @pattern
字符串Compare(strA,strB) CASE WHEN @strA = @strB THEN 0 ...End
字符串。Concat(str0,str1) @str0 || @str1
string.IsNullOrEmpty(value) @value 为 NULL 或 @value = ''
string.IsNullOrWhiteSpace(value) @value IS NULL 或 trim(@value) = ''
stringValue.CompareTo(strB) CASE WHEN @stringValue = @strB THEN 0 ...End
stringValue.Contains(value) instr(@stringValue,0 @value)>
stringValue.EndsWith(value) @stringValue LIKE '%' || @value
stringValue.FirstOrDefault() substr(@stringValue、1、1)
stringValue.IndexOf(value) instr(@stringValue, @value) - 1
stringValue.LastOrDefault() substr(@stringValue,length(@stringValue),1)
stringValue.Length length(@stringValue)
stringValue.Replace(oldValue, newValue) replace(@stringValue, @oldValue, @newValue))
stringValue.StartsWith(value) @stringValue LIKE @value ||“%”
stringValue.Substring(startIndex) substr(@stringValue, @startIndex + 1)
stringValue.Substring(startIndex,length) substr(@stringValue, @startIndex + 1, @length)
stringValue.ToLower() lower(@stringValue)
stringValue.ToUpper() upper(@stringValue)
stringValue.Trim() trim(@stringValue)
stringValue.Trim(trimChar) trim(@stringValue, @trimChar)
stringValue.TrimEnd() rtrim(@stringValue)
stringValue.TrimEnd(trimChar) rtrim(@stringValue, @trimChar)
stringValue.TrimStart() ltrim(@stringValue)
stringValue.TrimStart(trimChar) ltrim(@stringValue, @trimChar))

注意

为便于说明,部分 SQL 进行了简化。 实际的 SQL 更复杂,可以处理更广泛的值。

其他函数

.NET SQL
collection.Contains(item) @item 在 @collection
enumValue.HasFlag(flag) @enumValue & @flag = @flag
nullable.GetValueOrDefault() coalesce(@nullable,0)
nullable.GetValueOrDefault(defaultValue) coalesce(@nullable, @defaultValue)

另请参阅