我一直在阅读 Ienumerables 不会立即运行。所以我试图找到查询列表的最佳方法。
下面是我的 getAll 方法。其次是我的过滤方法。其次是首选的过滤方法(可读性)。
我的问题是,第三种方法和直接查询一样吗?换句话说,它会,还是不会从数据库加载所有 myObjects 然后过滤?或从数据库获取时进行过滤。
public static IEnumerable<myObject> getAll()
{
using (var db = Database.OpenConnectionString(blahblah))
{
var queryResults = db.Query("SELECT * FROM vu_myObjects");
return queryResults .Select(x => new myObject(x.myObjectName, x.myObjectF));
}
}
public static IEnumerable<myObject> getAllForFilter(String filter)
{
using (var db = Database.OpenConnectionString(blahblah))
{
var queryResults = db.Query("SELECT * FROM vu_myObjects WHERE ObjectF = @0", filter);
return queryResults.Select(x => new myObject(x.myObjectName, x.ObjectF));
}
}
public static IEnumerable<myObject> getAllForFilter(String filter)
{ // Not checked syntax.
return getAll().Where(x => x.ObjectF = filter);
}
或者,如果您有更好的建议,我会全力以赴。