使用 .NET 3.5,但
Select
调用会出现错误。难道编译器不应该足够聪明来推断这一点吗?如果没有,为什么不呢?
public IEnumerable<Customer> TableToCustomers(Table table)
{
return table.Rows.Select(RowToCustomer);
}
private Customer RowToCustomer(TableRow row)
{
return new Customer { ... };
}
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);
}
table.Rows.OfType<DataRow>().Select(RowToCustomer);