C# 如何在xamarin中的SQLite中创建用户定义的函数?

C# 如何在xamarin中的SQLite中创建用户定义的函数?,c#,xamarin,sqlite.net,C#,Xamarin,Sqlite.net,我试图在xamarin中执行此查询 SELECT * FROM GPSPoint WHERE SQRT( POW({0}-lat,2) + POW({1}-lng,2) ) < 5*5 搜索之后,我发现Android开发人员可以使用该方法在SQLite中创建新函数 如何在xamarin中执行相同的操作?在下面的示例中,我将调用我的自定义sqlite函数 MySqliteAdd,它有两个参数作为输入,结果是它们的和 [SqliteFunction(FuncType = FunctionTy

我试图在xamarin中执行此查询

SELECT * FROM GPSPoint WHERE SQRT( POW({0}-lat,2) + POW({1}-lng,2) ) < 5*5
搜索之后,我发现Android开发人员可以使用该方法在SQLite中创建新函数


如何在xamarin中执行相同的操作?

在下面的示例中,我将调用我的自定义sqlite函数 MySqliteAdd,它有两个参数作为输入,结果是它们的和

[SqliteFunction(FuncType = FunctionType.Scalar, Arguments = 2, Name = "MySqliteAdd")]
public class MySqliteAdd : SqliteFunction
{
   public override object Invoke(object[] args){
        return System.Convert.ToInt32(args[0]) + System.Convert.ToInt32(args[1]);
   }
}
您可以在如下所示的sqlite查询中使用它

Select MySqliteAdd(25,35)
这会给你60分的结果

最后,您必须在初始化连接之前注册函数

SqliteFunction.RegisterFunction(typeof(MySqliteAdd));

AFAIK与存储过程一样,不能在SQLite中创建函数。如果你发现我错了,请LMK,因为这对我有好处。我甚至不确定这是一个有效的查询。SQL查询将位于col=value@Takarii它是c语法中的有效查询。原始语句是var query=conn.Querystring.FormatSELECT*FROM GPSPoint,其中SQRT POW{0}-lat,2+POW{1}-lng,2<5*5,lat,lng@但是android开发者可以创建新功能。请参阅。
SqliteFunction.RegisterFunction(typeof(MySqliteAdd));