[英]Compare efficiency of two different LINQ statements
我正在學習C#(C ++中的背景),我對LINQ表達式有疑問。 以下兩個函數都做同樣的事情(盡我所知)。 Wombats的類型是System.Data.Linq.Table<Wombat>
。
我很想知道
我的猜測是第二種效率更高,但除非袋熊桌上有數百萬只袋熊,否則它並不重要。 返回IQueryable並不重要,因為我們只返回一個袋熊。
提前致謝!
public static DBConnector.Connections.Wombat getWombat(String wombatID)
{
var db = getDBInstance();
return db.Wombats.FirstOrDefault(x => x.ID.ToString() == wombatID);
}
public static DBConnector.Connections.Wombat getWombat(String wombatID)
{
var db = getDBInstance();
var guid = new System.Guid(wombatID);
return db.Wombats.FirstOrDefault(x => x.ID == guid);
}
你的猜測是正確的,第二個查詢可能更有效,因為它會解析一次GUID而不是將每行中的GUID轉換為字符串。 查詢提供程序可以優化它,但它不必; 您的查詢提供程序也可能會選擇將GUID轉換為字符串進行比較,但這將是一個相當不幸的選擇。
假設除非表中有大量的Wombat
對象,否則你也是正確的。
支持第二個查詢有一個顯着的區別:查詢提供程序可能無法識別ToString
方法,因此由於運行時錯誤,您的第一個查詢甚至都不會執行。
如果您返回IQuerable,則可能會延遲評估,從而允許其他人首先更新該值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.