CLR 方法與標準函式的對應

Entity Framework 提供一組標準函式,可實作在許多資料庫系統常見的功能,例如字串操作和數學函式。 這樣就可以讓開發人員以廣泛的資料庫系統為相標。 從某種查詢技術 (例如 LINQ to Entities) 呼叫時,這些標準函式會轉譯成所使用之提供者的正確對應存放函式。 這樣就可以利用跨資料來源的通用形式來表示函式引動過程,在不同的資料來源提供一致的查詢體驗。 如果運算元為數值型別,位元運算 AND、OR,、NOT 和 XOR 運算子也是對應到這些標準函式。 若為布林運算元,位元運算 AND、OR、NOT 和 XOR 運算子會計算這些運算元的邏輯 AND、OR、NOT 和 XOR 運算。 如需詳細資訊,請參閱標準函式 (Entity SQL)

就 LINQ 案例而言,針對 Entity Framework 的查詢會透過標準函式將某些 CLR 方法對應到基礎資料來源。 在 LINQ to Entities 查詢中,不是明確對應到標準函式的任何方法呼叫,將會導致擲回執行階段 NotSupportedException 例外狀況 (Exception)。

System.String 方法 (靜態) 對應

System.String 方法 (靜態) 標準函式

System.String Concat(String str0, String str1)

Concat(str0, str1)

System.String Concat(String str0, String str1, String str2)

Concat(Concat(str0, str1), str2)

System.String Concat(String str0, String str1, String str2, String str03)

Concat(Concat(Concat(str0, str1), str2), str3)

Boolean Equals(String a, String b)

= 運算子

Boolean IsNullOrEmpty(String value)

(IsNull(value)) OR Length(value) = 0

Boolean op_Equality(String a, String b)

= 運算子

Boolean op_Inequality(String a , String b)

!= 運算子

Microsoft.VisualBasic.Strings.Trim(String str)

Trim(str)

Microsoft.VisualBasic.Strings.LTrim(String str)

Ltrim(str)

Microsoft.VisualBasic.Strings.RTrim(String str)

Rtrim(str)

Microsoft.VisualBasic.Strings.Len(String expression)

Length(expression)

Microsoft.VisualBasic.Strings.Left(String str, Int32 Length)

Left(str, Length)

Microsoft.VisualBasic.Strings.Mid(String str, Int32 Start, Int32 Length)

Substring(str, Start, Length)

Microsoft.VisualBasic.Strings.Right(String str, Int32 Length)

Right(str, Length)

Microsoft.VisualBasic.Strings.UCase(String Value)

ToUpper(Value)

Microsoft.VisualBasic.Strings.LCase(String Value)

ToLower(Value)

System.String 方法 (執行個體) 對應

System.String 方法 (執行個體) 標準函式 注意事項

Boolean Contains(String value)

this LIKE '%value%'

如果 value 不是一個常數,則這會對應至 IndexOf(this, value) > 0

Boolean EndsWith(String value)

this LIKE '%value'

如果 value 不是一個常數,則這會對應至 Right(this, length(value)) = value

Boolean StartsWith(String value)

this LIKE 'value%'

如果 value 不是一個常數,則這會對應至 IndexOf(this, value) = 1。

Length

Length(this)

Int32 IndexOf(String value)

IndexOf(this, value) - 1

System.String Insert(Int32 startIndex, String value)

Concat(Concat(Substring(this, 1, startIndex), value), Substring(this, startIndex+1, Length(this) - startIndex))

System.String Remove(Int32 startIndex)

Substring(this, 1, startIndex)

System.String Remove(Int32 startIndex, Int32 count)

Concat(Substring(this, 1, startIndex) , Substring(this, startIndex + count +1, Length(this) - (startIndex + count)))

只有當 count 是大於或等於 0 的整數時,才支援 Remove(startIndex, count)。

System.String Replace(String oldValue, String newValue)

Replace(this, oldValue, newValue)

System.String Substring(Int32 startIndex)

Substring(this, startIndex +1, Length(this) - startIndex)

System.String Substring(Int32 startIndex, Int32 length)

Substring(this, startIndex +1, length)

System.String ToLower()

ToLower(this)

System.String ToUpper()

ToUpper(this)

System.String Trim()

Trim(this)

System.String TrimEnd(Char[] trimChars)

RTrim(this)

System.String TrimStart(Char[]trimChars)

LTrim(this)

Boolean Equals(String value)

= 運算子

System.DateTime 方法 (靜態) 對應

System.DateTime 方法 (靜態) 標準函式 附註

Boolean Equals(DateTime t1, DateTime t2)

= 運算子

System.DateTime.Now

CurrentDateTime()

System.DateTime.UtcNow

CurrentUtcDateTime()

Boolean op_Equality(DateTime d1, DateTime d2)

= 運算子

Boolean op_GreaterThan(DateTime t1, DateTime t2)

> 運算子

Boolean op_GreaterThanOrEqual(DateTime t1, DateTime t2)

>= 運算子

Boolean op_Inequality(DateTime t1, DateTime t2)

!= 運算子

Boolean op_LessThan(DateTime t1, DateTime t2)

< 運算子

Boolean op_LessThanOrEqual(DateTime t1, DateTime t2)

<= 運算子

Microsoft.VisualBasic.DateAndTime.DatePart( _

ByVal Interval As DateInterval, _

ByVal DateValue As DateTime, _

Optional ByVal FirstDayOfWeekValue As FirstDayOfWeek = VbSunday, _

Optional ByVal FirstWeekOfYearValue As FirstWeekOfYear = VbFirstJan1 _

) As Integer

如需詳細資訊,請參閱「DatePart 函式」一節。

Microsoft.VisualBasic.DateAndTime.Now

CurrentDateTime()

Microsoft.VisualBasic.DateAndTime.Year(DateTime TimeValue)

Year()

Microsoft.VisualBasic.DateAndTime.Month(DateTime TimeValue)

Month()

Microsoft.VisualBasic.DateAndTime.Day(DateTime TimeValue)

Day()

Microsoft.VisualBasic.DateAndTime.Hour(DateTime TimeValue)

Hour()

Microsoft.VisualBasic.DateAndTime.Minute(DateTime TimeValue)

Minute()

Microsoft.VisualBasic.DateAndTime.Second(DateTime TimeValue)

Second()

System.DateTime 方法 (執行個體) 對應

System.DateTime 方法 (執行個體) 標準函式

Boolean Equals(DateTime value)

= 運算子

Day

Day(this)

Hour

Hour(this)

Millisecond

Millisecond(this)

Minute

Minute(this)

Month

Month(this)

Second

Second(this)

Year

Year(this)

System.DateTimeOffset 方法 (執行個體) 對應

為列出之屬性上的 get 方法顯示的對應。

System.DateTimeOffset 方法 (執行個體) 標準函式 注意事項

Day

Day(this)

對 SQL Server 2005 不支援。

Hour

Hour(this)

對 SQL Server 2005 不支援。

Millisecond

Millisecond(this)

對 SQL Server 2005 不支援。

Minute

Minute(this)

對 SQL Server 2005 不支援。

Month

Month(this)

對 SQL Server 2005 不支援。

Second

Second(this)

對 SQL Server 2005 不支援。

Year

Year(this)

對 SQL Server 2005 不支援。

Bb738681.note(zh-tw,VS.100).gif注意:
如果比較的 DateTimeOffset 物件相等,Equals 方法會傳回 true;否則會傳回 falseCompareTo 方法會傳回 0、1 或 -1,需視比較的 DateTimeOffset 物件是否分別為相等、大於或小於而定。

System.DateTimeOffset 方法 (靜態) 對應

為列出之屬性上的 get 方法顯示的對應。

System.DateTimeOffset 方法 (靜態) 標準函式 注意事項

System.DateTimeOffset.Now()

CurrentDateTimeOffset()

對 SQL Server 2005 不支援。

System.TimeSpan 方法 (執行個體) 對應

為列出之屬性上的 get 方法顯示的對應。

System.TimeSpan 方法 (執行個體) 標準函式 注意事項

Hours

Hour(this)

對 SQL Server 2005 不支援。

Milliseconds

Millisecond(this)

對 SQL Server 2005 不支援。

Minutes

Minute(this)

對 SQL Server 2005 不支援。

Seconds

Second(this)

對 SQL Server 2005 不支援。

Bb738681.note(zh-tw,VS.100).gif注意:
如果比較的 TimeSpan 物件相等,Equals 方法會傳回 true;否則會傳回 falseCompareTo 方法會傳回 0、1 或 -1,需視比較的 TimeSpan 物件是否分別為相等、大於或小於而定。

DatePart 函式

DatePart 函式會對應到幾個不同標準函式的其中一個,根據 Interval 的值而定。 下表顯示支援之 Interval 值的標準函式對應:

間隔值 標準函式

DateInterval.Year

Year()

DateInterval.Month

Month()

DateInterval.Day

Day()

DateInterval.Hour

Hour()

DateInterval.Minute

Minute()

DateInterval.Second

Second()

數學函式對應

CLR 方法 標準函式

System.Decimal.Ceiling(Decimal d)

Ceiling(d)

System.Decimal.Floor(Decimal d)

Floor(d)

System.Decimal.Round(Decimal d)

Round(d)

System.Math.Ceiling(Decimal d)

Ceiling(d)

System.Math.Floor(Decimal d)

Floor(d)

System.Math.Round(Decimal d)

Round(d)

System.Math.Ceiling(Double a)

Ceiling(a)

System.Math.Floor(Double a)

Floor(a)

System.Math.Round(Double a)

Round(a)

System.Math.Round(雙精度浮點數值、Int16 數字)

Round(值、數字)

System.Math.Round(雙精度浮點數值、Int32 數字)

Round(值、數字)

System.Math.Round(十進位值、Int16 數字)

Round(值、數字)

System.Math.Round(十進位值、Int32 數字)

Round(值、數字)

System.Math.Abs(Int16 值)

Abs(值)

System.Math.Abs(Int32 值)

Abs(值)

System.Math.Abs(Int64 值)

Abs(值)

System.Math.Abs(位元組值)

Abs(值)

System.Math.Abs(單一值)

Abs(值)

System.Math.Abs(雙精度浮點數值)

Abs(值)

System.Math.Abs(十進位值)

Abs(值)

System.Math.Truncate(雙精度浮點數值、Int16 數字)

Truncate(值、數字)

System.Math.Truncate(雙精度浮點數值、Int32 數字)

Truncate(值、數字)

System.Math.Truncate(十進位值、Int16 數字)

Truncate(值、數字)

System.Math.Truncate(十進位值、Int32 數字)

Truncate(值、數字)

System.Math.Power(Int32 值、Int64 指數)

Power(值、指數)

System.Math.Power(Int32 值、雙精度浮點指數)

Power(值、指數)

System.Math.Power(Int32 值、十進位指數)

Power(值、指數)

System.Math.Power(Int64 值、Int64 指數)

Power(值、指數)

System.Math.Power(Int64 值、雙精度浮點指數)

Power(值、指數)

System.Math.Power(Int64 值、十進位指數)

Power(值、指數)

System.Math.Power(雙精度浮點數值、Int64 指數)

Power(值、指數)

System.Math.Power(雙精度浮點數值、雙精度浮點指數)

Power(值、指數)

System.Math.Power(雙精度浮點數值、十進位指數)

Power(值、指數)

System.Math.Power(十進位值、Int64 指數)

Power(值、指數)

System.Math.Power(十進位值、雙精度浮點指數)

Power(值、指數)

System.Math.Power(十進位值、十進位指數)

Power(值、指數)

位元運算子對應

位元運算子 非布林運算元的標準函式 布林運算元的標準函式

位元 AND 運算子

BitWiseAnd

op1 AND op2

位元 OR 運算子

BitWiseOr

op1 OR op2

位元 NOT 運算子

BitWiseNot

NOT(op)

位元 XOR 運算子

BitWiseXor

((op1 AND NOT(op2)) OR (NOT(op1) AND op2))

其他對應

方法 標準函式

Guid.NewGuid()

NewGuid()

另請參閱

概念

LINQ to Entities