private ICollection <string> DoSharding(ICollection <string> availableTargetNames, ListRouteValue shardingValue) { ICollection <string> result = new LinkedList <string>(); foreach (var value in shardingValue.GetValues()) { string target = preciseShardingAlgorithm.DoSharding(availableTargetNames, new PreciseShardingValue(shardingValue.GetTableName(), shardingValue.GetColumnName(), value)); if (null != target) { result.Add(target); } } return(result); }
private bool IsSameRouteValue(ShardingRule shardingRule, ListRouteValue routeValue1, ListRouteValue routeValue2) { return(IsSameLogicTable(shardingRule, routeValue1, routeValue2) && routeValue1.GetColumnName().Equals(routeValue2.GetColumnName()) && routeValue1.GetValues().SequenceEqual(routeValue2.GetValues())); }