我正在寻找创建匿名类型集合的最佳实践。

有几种方法-this一种,关于this线程的大多数答案都假定可以在一个语句中构造整个匿名集合。

由于通常使用匿名类型来替换用于存储临时类的类(如this SO answer中所提出),因此我想避免像this post所建议的那样为匿名集合创建和使用一个类。

就我而言,我正在遍历一个集合-对于该集合中的每个项目,我都希望以匿名类型(充当元组)来收集相关对象。我需要将这些匿名类型放入集合中,然后对它们进行排序以进行进一步的工作。

我考虑过的其他方法:

  • 使用object []或ArrayList(失去匿名类型的好处)
  • 为所需项创建包装类(消除对匿名类型的需要)

  • 这是我的代码中唯一需要这样的集合的地方-最好的方法是什么?

    附加信息:

    我正在使用旧版.Net 1.1对象,因此正在使用的集合是实现IEnumerable的强类型集合,因此大多数Linq扩展方法(如.Select)将无法使用:

    代码示例
    foreach (Item item in myItems)
    {
        foreach (Confirmation confirmation in item.GetConfirmations(true))
        {
            if (lastParentId != item.ParentId)
            {
                lastParentId = item.ParentId;
                parentObject = new ParentItem(lastParentId);
            }
    
            itemHolder = new ArrayList { item, confirmation };
            if (parentObject!= null)
            {
                itemHolder.Add(parentObject.Rate);
            }
    
            sortConfirmations.Add(confirmation.Date, itemHolder);
        }
    }
    
    // Use sortConfirmations
    

    分辨率

    我最终使用通用字典将相关项目收集在一起,并使用.OrderBy()对它们进行排序-难看,但是它可以工作...并且比现有代码更好。

    最佳答案

    对于一个非常不同的答案... LINQ?



    听起来像:

    var list = (from item in collection
              from related in item.Relationship
              order by ...something...
              select new {item,related}).ToList()
    

    10-05 21:09
    查看更多