[英]Can't call another method from LINQ statement
我有 ac# 语句,它遍历行的集合。 其中一个字段调用私有方法来获取对象数组,但我得到的是空值。 我在 linq 中放置了一个断点,但它从未命中该方法。
这是我的代码
IQueryable<MyObject> myObject = ds.Tables['Table'].AsEnumerable().Select(row => new MyObject
{
id = row.Field<int>("ID"),
MyCollectionArray = this.getCollectionArray(row.Field<string>("MyAggregatedString")),
}).AsQueryable();
private MyObect[] getCollectionArray(string concatString)
{
// placed a breakpoint, it is never called. Not sure why
}
感谢您的任何帮助。
您面临的称为Deferred Execution 。
这意味着您的查询在您在某处使用它之前不会执行。
这是文档的一部分:
延迟执行意味着表达式的计算被延迟到实际需要它的实现值。 当您必须操作大型数据集合时,延迟执行可以极大地提高性能,尤其是在包含一系列链式查询或操作的程序中。 在最好的情况下,延迟执行只允许通过源集合进行一次迭代。
为了执行你的语句,你只需要使用它。 最简单的方法可能只是通过调用
myObject.ToList()
如果您使用需要填充值的函数(如 Sum、Average 等),它也会被执行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.