ソースを調べましたが、述語を使用して削除できる場所はどこにもありません。ただし、次の拡張メソッドは、探している機能を提供する必要があります。
using System.Linq.Expressions;
using SQLite;
using System.Collections.Generic;
public static class DeleteExtensions
{
public static int Delete<T>(this TableQuery<T> tableQuery, Expression<Func<T, bool>> predExpr)
{
BindingFlags flags = BindingFlags.Instance | BindingFlags.NonPublic;
Type type = tableQuery.GetType();
MethodInfo method = type.GetMethod("CompileExpr", flags);
if (predExpr.NodeType == ExpressionType.Lambda) {
var lambda = (LambdaExpression)predExpr;
var pred = lambda.Body;
var args = new List<object> ();
var w = method.Invoke(tableQuery, new object[] {pred, args});
var compileResultType = w.GetType();
var prop = compileResultType.GetProperty("CommandText");
string commandText = prop.GetValue(w, null).ToString();
var cmdText = "delete from \"" + tableQuery.Table.TableName + "\"";
cmdText += " where " + commandText;
var command = tableQuery.Connection.CreateCommand (cmdText, args.ToArray ());
int result = command.ExecuteNonQuery();
return result;
} else {
throw new NotSupportedException ("Must be a predicate");
}
}
}
ただし、TableQuery クラスを使用することでこれがどの程度予測可能になるかはわかりません。現在、削除と更新を手動で行う必要があるのはそのためだと思います。したがって、自己責任でテストして使用してください:)