再一次,我遇到了一个我不理解的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);
}
答案 0 :(得分:1)
在我强力输入我的settingsSheet变量之后,这是有用的:
var cells = settingsSheet.Range["B1:B999"].Cast<Excel.Range>().Select(x => x.Value2 != null);
因此,Range[]
的结果必须明确转换为Range
类型。
尽管存在对隐式类型的推动,但使用LINQ
查询时需要显式输入