代码之家  ›  专栏  ›  技术社区  ›  Josh

System.Data.DataTable的轻量级替换

  •  3
  • Josh  · 技术社区  · 14 年前

    表格式数据作为分隔数据存储在数据库中。不太理想,我知道,但系统就是这样设计的。我需要提取数据并将其解析为某种结构。

    在过去,我会使用一个DataTable并称之为good。但现在,这感觉很肮脏。在我的数据模型中存储表格数据的更好、更高效、更轻量级的结构是什么?

    3 回复  |  直到 14 年前
        1
  •  2
  •   as-cii    14 年前

    好吧,只要创建一个类,它将数据库的所有列都作为属性。然后实例化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。

        2
  •  3
  •   Community Reversed Engineer    13 年前

    以下是Telerik开发人员提供的一个轻量级数据表:

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

    它支持INotifyCollectionChanged和INotifyPropertyChanged,因此在数据绑定方面工作得很好。

    我不认为它更“脏”,但它是另一种选择。

        3
  •  0
  •   Alen.Toma    7 年前

    好吧,使用我开发的一个库,包括类型到类型转换和更多,以及数据读取器到列表 https://www.nuget.org/packages/Generic.LightDataTable/