0

我有一个“ActiveNodes”项目列表。每个项目都属于一个“层”,因此有一个 tierID。TierID 不是唯一的。我想要做的是按层循环所有项目,然后是层内的每个项目。这就是我接近它的方式,但考虑到 linq 的灵活性,我想知道是否有更好的方法。

        var tiers = ActiveNodes.Select(x => x.TierID).Distinct();

        foreach (var t in tiers)
        {
            var nodes = ActiveNodes.Where(x => x.TierID == t);

            foreach(var n in nodes)
            {
                // do something
            }
        }
4

1 回答 1

3

你应该使用GroupBy

var tiers = ActiveNodes.GroupBy(x => x.TierID);

foreach (var t in tiers)
{
    // Id for current group can be taken from t.Key property
    var tierId = t.Key;

    // t implements IEnumerable<Node>, so you can loop over it directly
    foreach(var n in t)
    {
        // do something
    }
}
于 2013-08-30T09:12:45.127 回答