解决方案 »

  1.   

    var  s[] = {1000,1001,1002,1006,1009};
    var result = Enumerable.Range(1000,10).Except(s);
      

  2.   

            List<string> list = new List<string> { "1000", "1001", "1002", "1006", "1009", "abc10","abcd1", "abc11", 
                                                                              "abc12", "abc15", "abc123", "abc124","abcd5", "abc127" };
            Function(list);        private void Function(List<string> list)
            {
                list.GroupBy(GroupData).ToList().ForEach(x =>
                {
                    x.OrderBy(o => o).GroupBy(GroupData2).ToList().ForEach(y =>
                    {
                        IOrderedEnumerable<string> orders = y.OrderBy(o => o);
                        int min = Convert.ToInt32(Regex.Match(orders.First(), @"[\d]+").Value);
                        int max = Convert.ToInt32(Regex.Match(orders.Last(), @"[\d]+").Value);
                        IEnumerable<string> result = Enumerable.Range(min, max - min).Select(s => 
                            Regex.Replace(orders.First(), @"[\d]+", s.ToString())).Where(w => !orders.Contains(w));
                        MessageBox.Show(string.Join(";", result));
                    });
                });
            }        private int GroupData(string str)
            {
                return str.Length;
            }        private string GroupData2(string str)
            {
                return Regex.Replace(str, @"[\d]+", string.Empty);
            }
    试试看