Легкая замена для System.Data.DataTable - PullRequest
3 голосов
/ 22 ноября 2010

Существуют табличные данные, которые хранятся в базе данных как данные с разделителями. Не знаю, я знаю, но именно так была разработана система. Мне нужно вытащить данные и разобрать их в некую структуру.

В старые времена я использовал DataTable и называл его хорошим. Теперь, однако, это просто кажется грязным. Какая структура лучше, эффективнее и легче для хранения табличных данных в моей модели данных?

Ответы [ 3 ]

3 голосов
/ 22 ноября 2010

Вот облегченная DataTable от одного из разработчиков Telerik:

http://blogs.telerik.com/vladimirenchev/posts/09-04-23/lightweight-datatable-for-your-silverlight-applications.aspx

Он поддерживает INotifyCollectionChanged и INotifyPropertyChanged, поэтому хорошо работает для привязки данных.

Я бы не сказал, что это менее "грязно", но это альтернатива.

2 голосов
/ 22 ноября 2010

Хорошо, просто создайте класс, в котором все столбцы базы данных являются свойствами.Затем просто создайте реализацию ICollection (List, Hashset и т. Д.) И заполните ее (например, с помощью LINQ).

  public class Customer
  {
    public int Id { get; set;}
    public string Name { get; set; }

    public Customer(int id, string name)
    {
        this.Id = id;
        this.Name = name;
    }
  }

И сделайте что-то вроде:

List<Customer> customers = new List<Customer>();
using (DbDataReader reader = // instantiate reader)
{
    while (reader.Read())
    {
       Customer customer = new Customer(reader.GetInt32(0), reader.GetString(1));
       customers.Add(customer);
    }
}

Если вы обращаетесь к данным, которые хранятся в базе данных, вы можете посмотреть на LinqToSql или LinqToEntities.

0 голосов
/ 03 октября 2017

Хорошо, используйте библиотеку, которую я разработал, она включает в себя тип для преобразования типа и многое другое, а также для чтения данных в список https://www.nuget.org/packages/Generic.LightDataTable/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...