private int ShardKeyCompare(object o1, object o2, FabricShardIndexType shardType) { if (shardType == FabricShardIndexType.Range) { int v; DateTime dt; if (int.TryParse(o1.ToString(), out v)) { return(v - int.Parse(o2.ToString())); } else if (DateTime.TryParse(o1.ToString(), out dt)) { DateTime dt2 = DateTime.Parse(o2.ToString()); return(DateTime.Compare(dt, dt2)); } else { return(string.Compare(o1.ToString(), o2.ToString())); } } else if (shardType == FabricShardIndexType.Hash) { return(string.Compare(o1.ToString(), o2.ToString())); //return int.Parse(GetTruncatedHexString(o1.ToString()), NumberStyles.HexNumber) - //int.Parse(GetTruncatedHexString(o2.ToString()), NumberStyles.HexNumber); } else { throw new NotSupportedException(Enum.GetName(typeof(FabricShardIndexType), FabricShardIndexType.List)); } }
private int ShardKeyCompare(object o1, object o2, FabricShardIndexType shardType) { if (shardType == FabricShardIndexType.Range) { int v; DateTime dt; if (int.TryParse(o1.ToString(), out v)) { return v - int.Parse(o2.ToString()); } else if (DateTime.TryParse(o1.ToString(), out dt)) { DateTime dt2 = DateTime.Parse(o2.ToString()); return DateTime.Compare(dt, dt2); } else { return string.Compare(o1.ToString(), o2.ToString()); } } else if (shardType == FabricShardIndexType.Hash) { return string.Compare(o1.ToString(), o2.ToString()); //return int.Parse(GetTruncatedHexString(o1.ToString()), NumberStyles.HexNumber) - //int.Parse(GetTruncatedHexString(o2.ToString()), NumberStyles.HexNumber); } else throw new NotSupportedException(Enum.GetName(typeof(FabricShardIndexType), FabricShardIndexType.List)); }