Silverlight Observable Collection问题

时间:2010-11-10 11:43:46

标签: c# linq observablecollection

我有两个观察集合,如下面的

public ObservableCollection<Employee> AllEmployees
{
  get { return _allEmployees; }
  set { _allEmployees = value;  }
}

public ObservableCollection<Employee> EmployeesToDisplay
{
   get { return _employeesToDisplay; }
   set { _employeesToDisplay = value;  }
}

它们都是由wcf服务返回的值单独设置的。

                AllEmployees = ListofEmployees ;
                EmployeesToDisplay= ListofEmployees;

在更改允许我选择活跃员工或非活动员工的组合框时,我在'AllEmployees'上运行以下Linq查询

var employeesEnabled =来自AllEmployees中的实体             其中entity.IsEnabled == true             orderby entity.Name升序             选择实体;

然后将返回的值分配给EmployeesToDisplay,如下所示:

EmployeesToDisplay.Clear();
EmployeesToDisplay.Add(employeesEnabled as Employee);

问题是: 当我走过这条线'EmployeesToDisplay.Clear()'时......它甚至会清除'AllEmployees'

知道为什么会这样吗?以及如何绕过它?

感谢您的时间......

2 个答案:

答案 0 :(得分:2)

将'set'从'按引用复制'更改为'按值复制'。

set { _employeesToDisplay = new ObservableCollection<Employee>( value );  }

答案 1 :(得分:1)

你能提供更多代码吗?这两个集合彼此独立,虽然它们指向相同的对象,但它们并不相互依赖,因此清除它们不应该修改另一个。

此外,您无法使用Add方法向ObservableCollection添加多个项目;你必须一次做一件事。并且您还尝试将IEnumerable转换为Employee,这将导致将null值添加到您的集合中