我有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"));
我已经尝试过任何我能想到的东西,但它只是没有用。
欢迎提供任何帮助,因为列出所有产品的数量,包含在内的产品数量真的需要永远。
答案 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;