Необходимо разработать метод, который на вход получает объект DataSet и должен пробежаться по каждому значению в этом объекте, заменив звездочками все символы, начиная с 3го

Поделиться:

Метод должен вернуть DataSet с измененными значениями.

Создаем класс, и наследуемся от DataTable

code: #csharp
public class DataTableEx : DataTable
    {
        public DataTable SourceDataTable { get; set; }
 
        public DataTable GetEncodedDataTable
        {
            get
            {
                DataTable dt = new DataTable();
 
                //Скопировали все поля
                for (int count = 0; count < this.SourceDataTable.Columns.Count; count++)
                    dt.Columns.Add(this.SourceDataTable.Columns[count].ColumnName);
 
                //Шифруем значения + добавляем
                for (int row = 0; row < this.SourceDataTable.Rows.Count; row++)
                {
                    List<object> tmp = new List<object>();
                    for (int col = 0; col < this.SourceDataTable.Rows[row].ItemArray.Length; col++)
                    {
                        if (this.SourceDataTable.Rows[row][col] != DBNull.Value &&
                            !string.IsNullOrEmpty(this.SourceDataTable.Rows[row][col].ToString()))
                            tmp.Add(ReplaceWithStars(this.SourceDataTable.Rows[row][col].ToString()));
                        else
                            tmp.Add(string.Empty);
                    }
                    dt.Rows.Add(tmp.ToArray());
                }
 
 
                return dt;
            }
        }
 
        //Конструктор, принимает DataTable для зашифровки
        public DataTableEx(DataTable source)
        {
            this.SourceDataTable = source;
        }
 
        private string ReplaceWithStars(string str)
        {
            string result = string.Empty;
 
            for (int count = 0; count < str.Length; count++)
            {
                if (count <= 2)
                    result += "*";
                else
                    result += str[count];
            }
 
            return result;
        }
    }

И вот собсна пример использования.....(расписал все варианты)

code: #csharp
DataTable dt = new DataTable();
            dt.Columns.Add("1");
            dt.Columns.Add("2");
            dt.Rows.Add(new object[] { "11", 111111 });
            dt.Rows.Add(new object[] { "22", 222 });
            dt.Rows.Add(new object[] { "33", 3333 });
 
            DataSet ds = new DataSet();
            ds.Tables.Add(new DataTableEx(dt));
 
            DataTable dtEncoded = (ds.Tables[0] as DataTableEx).GetEncodedDataTable;

tEncoded - будет со звездами, а SourceDataTable - без!

автор: stalsoft

Похожие статьи:

теги: DataSet, DataTable