Hazelcast C# 客户端中的谓词用法



Java 示例显示了 Hazelcast 中谓词功能的各种用法,但我找不到使用 C# 过滤地图的方法。

例如,这在Java中工作:

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 );

查看 C# 客户端的源代码,我找不到名为 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# 中查询地图的正确方法是什么?

使用

Hazelcast .NET 客户端 3.6.2,您应该能够使用静态 Predicates 类,其工作方式类似于 Java 类。您遇到的编译错误也应该得到修复。以前版本的 .NET 客户端存在此问题。

此处提供了一些示例:

https://github.com/hazelcast/hazelcast-csharp-client/blob/master/src/Hazelcast.Net.Tests/Query/PredicatesTests.cs

最新更新