c# - IEnumerable<T> 赋值

标签 c# .net ienumerable variable-assignment

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

相关文章:

c# - 数据导出到 MS ACCESS 时, 'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册

c# - 如何使用C#将图像保存到数据库中

.net - 将文本字符串解析为 F# 代码

.net - 用于安装或卸载 .NET Windows 服务的批处理脚本

c# - 这两种改组 IEnumerable 的算法之间是否存在性能差异?

C# 将双数组传递给构造函数重载方法

c# - 如何简化 try-catch 的 return 语句

.net - 如何让 MaskedTextBox 只接受 HEX 值?

c# - IEnumerable - 更新 foreach 循环内的对象

.net - PowerShell 中的 IEnumerable<CustomType>