2016-12-14 6 views
0

私は2つのクラスを持っている:Realmist(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

ありがとう、私はそれをチェックしたが、それは同じことではありません。 1対多の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; 
関連する問題