Convert DataRowCollection to IEnumerable

后端 未结 4 915
孤城傲影
孤城傲影 2020-12-05 16:39

I would like to do something like this in .NET 3.5. What\'s the quickest way?

IEnumerable collection = 
    TypedDataSet.TypedTableBase

        
相关标签:
4条回答
  • 2020-12-05 17:27

    Assuming you're using .NET 4.0, which introduces covariance:

    // Presumably your table is of some type deriving from TypedTableBase<T>,
    // where T is an auto-generated type deriving from DataRow.
    IEnumerable<DataRow> collection = myTypedTable;
    

    The table type itself implements IEnumerable<T> where T : DataRow.

    Otherwise:

    IEnumerable<DataRow> collection = myTypedTable.Cast<DataRow>();
    
    0 讨论(0)
  • 2020-12-05 17:36

    You can call OfType<DataRow>() on the DataRowCollection.

    0 讨论(0)
  • 2020-12-05 17:41

    There is a built in extension method if you include System.Data.DataSetExtensions.dll in to your project that adds a AsEnumerable() method.

    IEnumerable<DataRow> collection = TypedDataSet.TypedTableBase<DataRow>.AsEnumerable();
    
    0 讨论(0)
  • 2020-12-05 17:43

    A simple direct solution is to use the method "Select()" of a System.Data.DataTable object, which produces "DataRow[]". From this you can treat as an IEnumberable using Linq like below:

    List<MyItem> items = dtItems.Select().Select(row => new MyItem(row)).ToList();
    

    Providing a useful list of objects for each row.

    0 讨论(0)
提交回复
热议问题