LINQ:在运行时访问子列表

Posted

技术标签:

【中文标题】LINQ:在运行时访问子列表【英文标题】:LINQ: get access to child lists during runtime 【发布时间】:2010-10-11 17:46:31 【问题描述】:

我进行分组并获取子列表... 在查询期间,我使用

创建了一个新 obj
var result3 = from tick in listTicks
              group tick by bla bla into g
              select new 
               
                  Count = g.Count(), 
                  Key = g.Key, 
                  Items = g,
                  Timestamp = g.First().timestamp,
                  LastTimestamp = g[-1].First().timestamp result3 isn't still declared???
              ;

我想在运行时访问最后创建的 obj 的新值 也许检查最后一个 first.Timestamp 是否具有特定值

在创建 select new 期间是否可以访问最后一个 g 我想从最后一个 g 中检查一个实际值

我想像 result3[result.count - 1].timestamp 之类的东西???在选择新部分...

【问题讨论】:

【参考方案1】:

我不应该理解正确,但这就是你想要的吗?

result3.Last().Timestamp;

评论后:我想我现在明白了。 您需要创建一个临时变量来存储最后一组的时间戳并将其值设置为更复杂的委托:

int lastTimestamp = 0; // Put the correct type and default value

var result3 = (from tick in listTicks
              group tick by bla bla into g
              select g)
              .Select
              (g => 
              
                  // Create your object with the last timestamp
                  var result = new
                   
                      Count = g.Count(), 
                      Key = g.Key, 
                      Items = g,
                      Timestamp = g.First().timestamp,
                      LastTimestamp = lastTimestamp
                  ;
                  // Set last timestamp for next iteration
                  lastTimestamp = result.Timestamp;
                  // Return your object
                  return result;
              );

不知道确切的上下文,但您可能想要添加“ToList()”来覆盖延迟获取。

【讨论】:

这不起作用...代码看起来不错...但在调试中... result3 没有来自临时结果 Counte、Key .... 等的新变量。 ..

以上是关于LINQ:在运行时访问子列表的主要内容,如果未能解决你的问题,请参考以下文章

如何针对分层对象列表动态构建和存储复杂的 linq 查询?

在没有ToList()的情况下运行时,在Linq的SelectMany()中读取文件会抛出System.IO.IOException

.NET 2.0 运行时上的 LINQ

Xml.Linq:反转 XML 的子节点

访问运行时错误 3075

链接列表中的运行时错误:“ListNode”类型的空指针内的成员访问