我们使用 Xamarin 和 SQLiteNet 作为 ORM。
在我们的数据层类中,我们有以下方法。
filter = ri => ri.ItemVersioniId == itemVersionId;
该方法正在获取与 Id 匹配的记录。如果 lambda 表达式是硬编码的,而不是使用“过滤器”参数,它会更快......即使它是相同的逻辑。
我们将能够将过滤器作为参数传递,但仍然可以获得良好的性能。有什么建议吗?
public virtual List<ResourceItem> GetResourceItems (string itemVersionId, Func<ResourceItem,bool> filter ){
//var t = db.Table<ResourceItem> ().Where (ri => ri.ItemVersionId == itemVersionId); --* this line is 10 times faster
var t = db.Table<ResourceItem> ().Where (filter); --* this line is 10 times slower
return new List<ResourceItem> (t);
}