我正在学习C#(C++中的背景),我对LINQ表达式有疑问.以下两个函数都做同样的事情(尽我所知).袋熊的类型是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);
}
Run Code Online (Sandbox Code Playgroud)
你的猜测是正确的,第二个查询可能更有效,因为它会解析一次GUID而不是将每行中的GUID转换为字符串.查询提供程序可以优化它,但它不必; 您的查询提供程序也可能选择将GUID转换为字符串进行比较,但这将是一个相当不幸的选择.
假设除非表中有大量Wombat对象,否则你也是正确的.
支持第二个查询有一个显着的区别:ToString查询提供程序可能无法识别该方法,因此由于运行时错误,您的第一个查询甚至无法执行.
| 归档时间: |
|
| 查看次数: |
212 次 |
| 最近记录: |