void foo (TableCellCollection bar)
{
bar.Cast<TableCellCollection>().Where(a...
}
在上面的代码中,lambda ' a
'仍然是TableCellCollection
而不是TableCell
,有人能指出我做错了什么吗?谢谢!
是的,您已经告诉它应该是TableCellCollection
与您的Cast
呼叫。如果您想将每个元素强制转换为TableCell
,则应该给出类型参数:
bar.Cast<TableCell>().Where(a...
根据Jon的回答,您的代码将在运行时导致强制转换异常。Cast方法适用于IEnumerable
集合,而不是IEnumerable<t>
集合。它就像你在做下面的事情:
IEnumerable EnumerableCells = bar;
foreach (object cell in EnumerableCells)
{
TableCellCollection newCell = (TableCellCollection)cell;// this line would throw a cast exception
}
我发现这很有用
var eta = e.Row.Cells;
eta.Cast<TableCell>().Where(a => a.Text == "Ind_Origen").Select(a => a.Text = "Origin").FirstOrDefault();
我使用Linq查询集合寻找一个字符串,然后改变它。如果您正在填充gridview并想要更改标题,则此功能非常有用。