【问题标题】:How to convert DataView,DataRowView to Generic Typed Lists如何将 DataView、DataRowView 转换为通用类型列表
【发布时间】:2011-06-08 08:30:38
【问题描述】:

除了循环之外,还有什么可能的方法,枚举 ICollection 以将它们分别转换为知道 ICollection 中的列的 Typed List。我正在使用 .net Framework 2.0、C#2.0。预期的答案是这样的,一个班轮

List<Bills> bills = GetBills(DataView/DataRowView/ICollection);

其中Bills 类型将BillNumber, BillDate, BilledTo 作为属性。 DataRowView/DataView 将具有相应的列,其中包含记录。是否有工厂构建方法可以完成这项工作?如果没有人来做呢?

【问题讨论】:

    标签: c# asp.net class list generics


    【解决方案1】:

    你能在一行中使用带有 lambda 的 LINQ Select 吗?沿着这些思路......

    List<Bills> bills = yourDataView.Rows.Select(t => new Bills() {BillNumber = t["BillNumber"], BillDate = t["BillDate"], BilledTo = t["BilledTo"]}).ToList();
    

    【讨论】:

    • 不会工作,因为他在 2.0 框架上,所以很遗憾没有 Linq。
    • 呸。没看到那一点。将是一个更简单的解决方案。
    • NET 2.0 所以对 Linq 来说是嘘声。如果我有 3.5 会更快乐
    【解决方案2】:

    使用 Linq Select 将 DataView 行转换为对象列表:

    DataView yourDataView;
    
    List<Bills> bills = yourDataView.ToTable().Rows.Cast<DataRow>()
                        .Select(r => new Bills() 
                        { 
                            BillNumber = r.Field<int>("BillNumber"), 
                            BillDate = r.Field<DateTime>("BillDate"), 
                            BilledTo = r["BilledTo"].ToString()                 
                        }).ToList();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      相关资源
      最近更新 更多