使用.NET 3.5,但Select
调用会出错。编译器不应该足够聪明地推断出这个吗?如果没有,为什么不呢?
public IEnumerable<Customer> TableToCustomers(Table table)
{
return table.Rows.Select(RowToCustomer);
}
private Customer RowToCustomer(TableRow row)
{
return new Customer { ... };
}
答案 0 :(得分:4)
Rows
属性定义为TableRowCollection Rows {get;}
public sealed class TableRowCollection : IList, ICollection, IEnumerable
它不是IEnumerable<TableRow>
,因此它只是IEnumerable
,因此无法将类型推断为TableRow
。
您可以这样做:
public IEnumerable<Customer> TableToCustomers(Table table)
{
return table.Rows.Cast<TableRow>().Select(RowToCustomer);
}
答案 1 :(得分:1)
table.Rows.OfType<DataRow>().Select(RowToCustomer);