我有两个对象声明为 IEnumerable<DateTime>
xVal 和 IEnumerable<double>
yVal。
然后我的程序在哪里:
var xVals = from p in result where p.chemical == "Benzene" select p.SampDate_Name;
var yVals = from p in result where p.chemical == "Benzene" select p.PCL;
然后我正在尝试以下作业:
xVal = xVals as IEnumerable<DateTime>;
yVal = yVals as IEnumerable<double>;
上面的代码设置了xVal
和 yVal
为空。
谁能解释一下这里出了什么问题?非常感谢您的帮助。
谢谢。
有一件事是肯定的:输入不为空。所以 xVals 和 yVals 是非空的,正如我调试的那样。我还能够遍历它们以获取每个的内容。 当我回来并发布我的发现时,我会尝试其他建议。非常感谢大家的回复。
这里的问题是 LINQ 是延迟执行的,它会在您执行 foreach 或 ToList/ToArray/ToDictionary 时执行。我的代码中的两个 linq 查询在分配完成之前没有执行。因此 xVal 和 yVal 被设置为空。 感谢所有帮助。
最佳答案
如果输入为 null 或无法执行转换,则 as 关键字会将输出设置为 null。
如果您使用了 xVal = (IEnumerable<DateTime>)xVals
你可能会得到一个异常,说它不能被转换。
关于c# - IEnumerable<T> 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7289364/