Linq on TableCellCollection - C#


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并想要更改标题,则此功能非常有用。

相关内容

  • 没有找到相关文章

最新更新