gpt4 book ai didi

c# - IEnumerable 赋值

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:13 25 4
gpt4 key购买 nike

我有两个对象声明为 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>;

上面的代码设置了xValyVal为空

谁能解释一下这里出了什么问题?非常感谢您的帮助。

谢谢。


有一件事是肯定的:输入不为空。所以 xVals 和 yVals 是非空的,正如我调试的那样。我还能够遍历它们以获取每个的内容。当我回来并发布我的发现时,我会尝试其他建议。非常感谢大家的回复。

这里的问题是 LINQ 是延迟执行的,它会在您执行 foreach 或 ToList/ToArray/ToDictionary 时执行。我的代码中的两个 linq 查询在分配完成之前没有执行。因此 xValyVal 被设置为空。感谢所有帮助。

最佳答案

如果输入为 null 或无法执行转换,则 as 关键字会将输出设置为 null。

如果您使用了 xVal = (IEnumerable<DateTime>)xVals你可能会得到一个异常,说它不能被转换。

MSDN description for as keyword

关于c# - IEnumerable<T> 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7289364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com