LINQ:在运行时访问子列表

时间:2009-03-06 11:50:42

标签: c# linq group-by

我组成一个小组并获取子列表...... 在查询期间,我用

创建一个新的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的select new on值 也许检查最后的first.Timestamp是否具有特定值

是否可以在创建select new {}期间访问最后一个g 我想用最后一个g

中的一个来检查实际值

我认为像result3 [result.count - 1] .timestamp ???在选择新部分......

1 个答案:

答案 0 :(得分: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()”以覆盖延迟提取。