android - Xamarin SQLite Net - 从多个表中获取数据

标签 android ios sqlite join xamarin

我正在开发 Xamarin 多平台 native 移动应用。我正在使用 sqlite.net 数据库插件。

Sqlite.Net Plugin

我创建了三个表:

public class OrderT
{
    SQLiteConnection database;

    [PrimaryKey, AutoIncrement]
    public int id { get; set; }
    public int client_id { get; set; }
    public DateTime order_date { get; set; }
}

public class OrderDetailT
{
    SQLiteConnection database;

    [PrimaryKey, AutoIncrement]
    public int id { get; set; }
    public int order_id { get; set; }
    public int quantity { get; set; }
    public float price { get; set; }
}

public class ClientT
{
    SQLiteConnection database;

    [PrimaryKey, AutoIncrement]
    public int id { get; set; }
    public string client_name { get; set; }
}

如何在 Xamarin Sqlite 中运行这样的查询?由于Xamarin Sqlite中没有关系和外键的概念。

SELECT OrderT.*, OrderDetailT.*, ClientT.*
FROM OrderT, OrderDetailT, ClientT
WHERE OrderT.client_id = ClientT.id AND OrderT.id = OrderDetailT.order_id

最佳答案

How can I run a query like this in Xamarin Sqlite? Since there is no concept of relationships and foreign key in Xamarin Sqlite

您可以使用LinQ来实现这一目标。

示例:

var list = from orderT in db.Table<OrderT>()
                  from clientT in db.Table<ClientT>()
                  from orderDetailT in db.Table<OrderDetailT>()
                  where orderT.client_id == clientT.id
                  where orderT.id == orderDetailT.order_id
                  select new { client_name=clientT.client_name, client_id = orderT.client_id, order_id = orderDetailT.order_id,price=orderDetailT.price, quality=orderDetailT.quantity };

关于android - Xamarin SQLite Net - 从多个表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46241941/

相关文章:

python - 如何使用 DetailView 中 PK(主键)字段以外的不同字段进行查询

android - 如果我使用颜色作为背景,EditText 尺寸会改变吗?

java - 我在 android 项目中包含的列表 fragment 似乎没有在运行时调用

ios - 当 uitableview 滚动时,UIProgressView 显示在错误的行上

ios - 尝试以编程方式在 ScrollView 中添加带有 SWIFT 约束的 UIView 失败

Android SQLite查询: "queryNumEntries .. is not applicable for the arguments"?

C# 在项目中使用 SQlite 通过在用户计算机上使用不同的版本?

Android 在调用 super.OnCreate() 之前停止 onCreate() 中的 Activity

java - 使用什么代替 postDelayed 来节省内存

ios - 在 UITestCase 期间使用可访问性标识符识别 UISearchBar