Ienumerablesはすぐには実行されないことを読んでいます。だから私はリストをクエリするための最良の方法を見つけようとしています。
以下は私のgetAllメソッドです。私のフィルターメソッドが続きます。推奨されるフィルター方法(読みやすさ)が続きます。
私の質問は、3番目の方法は直接クエリを実行するのと同じでしょうか?つまり、DBからすべてのmyObjectをロードしてからフィルタリングするのでしょうか、それともしないのでしょうか。または、DBから取得するときにフィルタリングします。
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);
}
あるいは、もっと良い提案があれば、私はすべての耳です。