如何使用Realm(v0.80)为Xamarin dotnet查询RealmList?

时间:2016-12-14 04:42:07

标签: c# realm

我有2个班级:

public class Invoice : RealmObject
{
   public int Id;
   public string Name { get; set; }
   public IList<Product> Products { get; }
}


public class Product : RealmObject
{
   public int Id { get; set; }
   public string Name { get; set; }
   public double Price { get; set; }
}

如何查询包含特定产品的所有发票?

我会像这样编写我的LINQ查询,但是我得到了一个不受支持的异常:

realm.All<Invoice>().Where(i => i.Products.Any(p => p.Name == "product 1"));

我可以这样做,但是每个产品的发票计数花费的时间太长了。

realm.All<Invoice>().ToList().Where(i => i.Products.Any(p => p.Name == "product 1"));

我已经尝试过任何我能想到的东西,但它只是没有用。

欢迎提供任何帮助,因为列出所有产品的数量,包含在内的产品数量真的需要永远。

1 个答案:

答案 0 :(得分:0)

使用最新版本(0.81.0),我们添加了对inverse relationships的支持。所以你可以稍微修改你的模型:

public class Product : RealmObject
{
    /* other properties */
    [Backlink(nameof(Invoice.Products))]
    public IQueryable<Invoice> RelatedInvoices { get; }
}

然后您可以查询发票,例如:

var product = realm.All<Product>().FirstOrDefault(p => p.Name == "product 1");
var invoices = product.RelatedInvoices;