2016-12-14 22 views
0

我有2類:如何查詢帶有Realm(v0.80)的Xamarin dotnet的RealmList?

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

這看起來相關:http://stackoverflow.com/questions/40330887/realm-xamarin -linq-object/40331608#40331608 – EpicPandaForce

+0

謝謝,我檢查過那個,但它不是一回事。查看一對多IList 這是我的問題。使用Contains或Any查詢不起作用。我唯一的選擇是遍歷列表中的每個元素,但是這非常緩慢並且勝過了目的。 – Morindin

回答

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; 
相關問題