我正在寻找创建匿名类型集合的最佳实践。
有几种方法-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?
听起来像:
var list = (from item in collection
from related in item.Relationship
order by ...something...
select new {item,related}).ToList()