我正在寻找创建匿名类型集合的最佳实践.
有几种方法 - 这个和大多数答案在这个线程上假设整个匿名集合可以在一个语句中构造.
由于匿名类型通常用于替换用于存储临时的类(如本SO答案中所提出的),我想避免为匿名集合创建和使用类,如本文所述.
在我的情况下,我正在迭代一个集合 - 对于集合中的每个项目,我想以匿名类型(充当元组)收集相关对象.我需要将这些匿名类型放入集合中,然后对它们进行排序以进行进一步的工作.
我考虑的其他方法:
这是我的代码中唯一需要这样一个集合的地方 - 最好的方法是什么?
附加信息:
我正在使用遗留的.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
Run Code Online (Sandbox Code Playgroud)
解析度
我最终使用通用字典一起收集相关项目并使用.OrderBy()对它们进行排序 - 很难看,但它有效......并且比现有代码更好.