【发布时间】:2011-01-06 17:59:42
【问题描述】:
我创建了一个继承自 List 的自定义集合,我创建了一个对我的数据进行一些处理的方法。我所有的操作都是从 Collection 中的一个私有字段完成的。
我已将我的 Private 字段设置为引用 this 对象,然后我需要对我的数据进行排序以便进行计算。我用 Linq 做,认为 *this 和我的 Private Field 是一样的。但是使用 Linq 所做的更改不会更改 this 对象。虽然我所做的所有其他更改都会改变它。
class OrdersDetailCollection : List<OrdersDetail>
{
List<OrdersDetail> _List;
public OrdersDetailCollection(IEnumerable<OrdersDetail> input)
{
this.AddRange(input);
_List = this;
_List = (from l in _List
orderby l.Item, l.DateExp
select l).ToList();
}
public void CalculateQty()
{
RemoveDuplicate();
_List = (from l in _List
where double.Parse(l.QteBO) > 0
orderby l.DateExp, l.Item
select l).ToList();
}
private void RemoveDuplicate()
{
//Do some stuff to _List
}
this 和 _List 是否应该相同,因为它们引用了内存中的相同空间?如何将 _List 分配给这个?
我的自定义集合缺少什么,以便我可以像使用列表一样使用它并执行以下操作(简化)?
OrdersDetailCollection ShipList = new OrdersDetailCollection(/*Value from SQL*/)
ShipList.CalculateQty();
return ShipList;
我想知道如何在没有扩展方法的情况下做到这一点,我认为yield可能与它有关,但不是很了解。
【问题讨论】:
标签: c# linq generics collections