为什么我不能查询这个范围?

时间:2014-12-12 12:29:56

标签: c# linq

再一次,我遇到了一个我不理解的LINQ问题。

所以我想我最好问一个通用的问题,所以也许下次我可以自己弄清楚。

这句话有什么问题?

var cells = settingsSheet.Range["B1:B999"].Select(x => x.Value2 != null);

忘记这是一个Excel范围的事实,我想知道为什么我不能以这种方式查询它。 认为它可能是一个类型问题我尝试了以下,这也不起作用:

var cells = settingsSheet.Range["B1:B999"].ToList<Excel.Range>().Select(x => x.Value2 != null);

当我说不起作用时,单词Value2显示为红色(“无法解析符号Value2”)。

Value2是Range类的有效属性。

为什么我不能这样做?

为了澄清,以下工作正常:

var cells = settingsSheet.Range["B1:B999"];
foreach (var q in cells)
{
   a = q.Value2);
}

1 个答案:

答案 0 :(得分:1)

在我强力输入我的settingsSheet变量之后,这是有用的:

var cells = settingsSheet.Range["B1:B999"].Cast<Excel.Range>().Select(x => x.Value2 != null);

因此,Range[]的结果必须明确转换为Range类型。

尽管存在对隐式类型的推动,但使用LINQ

查询时需要显式输入