2016-05-26 8 views
0

のJavaの例は、Hazelcastに述語の機能の様々な用途を示したが、私は、C#でマップをフィルタリングする方法を見つけることができないんです。例えば述語用法

これはJavaで動作します。

C#クライアントのソースコードを見ると
EntryObject e = new PredicateBuilder().getEntryObject(); 
Predicate agePredicate = e.get("age").equal(age); 
Predicate predicate = e.get("name").equal(name).and(agePredicate); 
people = personMap.values(predicate); 

、私はEntryObjectまたはPredicateBuilderという名前のクラスを見つけることができませんでした。

これはまた、Javaクライアント内の別の述語オブジェクトです:

IMap<Employee> map = hazelcastInstance.getMap("employee"); 
Set<Employee> employees = map.values(new SqlPredicate("active AND age < 30"));+ 

C#クライアントはSqlPredicateクラスを持っていますが、このコードは、C#で受け入れられない:

var predicate = new SqlPredicate("Type = 1 AND Enabled = 1"); 
var map = Cache.GetMap<int, Machine>(nameof(Machine)); 
var enabledMachines = map.Values(predicate); 

コンパイラエラーがある:

CS1503: cannot convert from 'Hazelcast.Core.SqlPredicate' to 'Hazelcast.Core.IPredicate<int, Machine>' 
方法によって期待される

...

だから、C#でマップを照会する適切な方法は何ですか?

答えて

1

使用Hazelcast .NETクライアントは、Javaのものと同様に動作し、静的述語のクラスを使用することができるはず3.6.2。あなたが発生しているコンパイルエラーも修正する必要があります。 .NETクライアントの以前のバージョンでは、この問題を持っていました。

いくつかの例はここに用意されています

https://github.com/hazelcast/hazelcast-csharp-client/blob/master/Hazelcast.Test/Hazelcast.Client.Test/PredicatesTest.cs

+0

は感謝:-)、その更新を逃しました –