我正在寻找创建由匿名类型制成的集合的最佳实践。
[有几种方法-this一个线程,而this线程的大多数答案都假定可以在一个语句中构造整个匿名集合。
由于匿名类型通常用于替换用于存储临时类的类(如this SO answer中所述,因此,我想避免像this post所建议的那样为匿名集合创建和使用一个类。] >
就我而言,我正在遍历一个集合-对于该集合中的每个项目,我都希望以匿名类型(充当元组)来收集相关对象。我需要将这些匿名类型放入集合中,然后对其进行排序以进行进一步的工作。
我考虑过的其他方法:
这是我代码中唯一需要这样的集合的地方-最好的方法是什么?
其他信息:
[我正在使用旧的.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?
如果对数组满意,可以使用数组初始化程序:
一个选项是使用示例项通过通用类型推断来创建集合,例如:
这一和对此的大多数答案线程假设整个匿名集合可以构造成一个声明。