public IEnumerable<IStreamQueryPartition<Guid>> Build(
                Guid lowerBoundExclusive,
                Guid upperBoundInclusive,
                int numberOfPartitions)
            {
                var upperBigIntInclusive = upperBoundInclusive.ToBigInteger();
                var lowerBigIntExclusive = lowerBoundExclusive.ToBigInteger();
                var space = upperBigIntInclusive - lowerBigIntExclusive;

                foreach (var i in Enumerable.Range(0, numberOfPartitions))
                {
                    var lower = lowerBigIntExclusive + (i*(space/numberOfPartitions));

                    var upper = lowerBigIntExclusive + ((i + 1)*(space/numberOfPartitions));

                    if (i == numberOfPartitions - 1)
                    {
                        upper = upperBigIntInclusive;
                    }

                    yield return new StreamQueryPartition<Guid>
                    {
                        LowerBoundExclusive = lower.ToGuid(),
                        UpperBoundInclusive = upper.ToGuid()
                    };
                }
            }
示例#2
0
 private static void TestGuidRoundTrip(Guid guid)
 {
     Console.WriteLine(guid);
     guid.ToBigInteger().ToGuid().Should().Be(guid);
 }