public static Query Delete(IDataDescriptor descriptor, object where) { var hash = Hash.FromAnonymousObject(where); var keys = hash.Keys.Intersect(Dialect.ResolveColumnNames(descriptor)).ToArray(); var sql = Dialect.DeleteFrom(descriptor.Table, descriptor.Schema, keys); var parameters = keys.ToDictionary(key => $"{Dialect.Parameter}{key}", key => hash[key]); return(new Query(sql, parameters)); }