レルムXamarin LINQクエリから返された「列」を制限する方法はありますか?レルムXamarin LINQ選択
たとえば、Customer
RealmObjectがあり、すべての顧客名のリストが必要な場合は、All<Customer>
をクエリして名前リストを作成する必要がありますか?それは面倒で非効率的です。私はドキュメントで何も見ていない。私はここで何かを見逃していますか?ありがとう!
レルムXamarin LINQクエリから返された「列」を制限する方法はありますか?レルムXamarin LINQ選択
たとえば、Customer
RealmObjectがあり、すべての顧客名のリストが必要な場合は、All<Customer>
をクエリして名前リストを作成する必要がありますか?それは面倒で非効率的です。私はドキュメントで何も見ていない。私はここで何かを見逃していますか?ありがとう!
レルムはオブジェクトベースのストアであることを覚えておく必要があります。 SqliteのようなRDBMSでは、戻り値を "レコード"の "列"のサブセットに制限するのは理にかなっていますが、オブジェクトストアでは、元のクラスから属性を削除して、これらの新しいクラスをオブジェクトとしてインスタンス化します。
は、このようにあなたがこれを行うことができ、顧客の名前を表す文字列のリストだけをしたいです:
List<string> names = theRealm.All<Customer>().ToList().Select(customer => customer.Name).ToList();
注:あなたがList
最初からRealm.All<>
結果を取り、その後、LINQのを使用してSelect
「フィルタ」は、必要なプロパティだけです。現在RealmResults
で.Select
を使用することは現在サポートされていません()。
あなたが一致POCOを持っていると仮定すると、元RealObject
からの属性のサブセットである複合型を返すために必要がある場合は、あなたが使用することができます:あなたがRealmResult
を変換したら
var custNames = theRealm.All<Customer>().ToList().Select((Customer c) => new Name() { firstName = c.firstName, lastName = c.lastName });
は、覚えておいてくださいあなたは生命のRealmObject
を使用して失うPOCOsの静的リスト。
個人的に私は
...レルムはRealmResult
ので、
RealObject
Sを使用して直接、新しいリストに次のものが必要POCOS毎回にそれらを変換し、その後、時間とメモリのオーバーヘッドを処理する上で、より効率的であるほど高速で可能な限りこれを行うことを避けます
これを踏まえて、realmオブジェクトのプロパティのサブセットを取得するシナリオはほとんどありません(サーバーへの送信または連結された文字列の作成については想像しています)。ほとんどの場合、 'All
@NikolaIrinchev完全に合意し、連結文字列の場合、連結を実行する 'RealmObject'内の' [Ignored] 'タグ付きreadonlyプロパティを使用して、FirstNameとLastNameを変換すると、First +文字列またはPOCOの 'List'への最後の名前.... – SushiHangover
名前だけを選択しても効果がありませんか? – Marco