c# - 如何使 ObservableCollection 中的项目独一无二?

标签 c# collections

我正在用以下内容填充一个可观察的集合:

var customers = new ObservableCollection<Customer>();

foreach (
    var customer in
        collListItem.Select(
            item =>
            new Customer
                {
                    Persona = item["Persona"].ToString(),
                    CustomerName = item["Title"].ToString()
                }))
{
    customers.Add(customer);
}

在我用这个集合中的元素填充 WPF 数据网格之前,我想让它成为角色和客户的唯一列表(没有重复的行)。

我尝试使用以下内容:

customers = customers.Distinct();

但是我收到错误:

Cannot convert source type 'System.Collections.Generic.IEnumerable to target type 'System.Collections.ObjectModel.ObservableCollection

是否有我可以使用的 ObservableCollection 的等效项?

最佳答案

因为 Distinct返回 IEnumerable<T> ,这不是 ObservableCollection .

如果你想区分ObservableCollection你应该像这样重新创建它:

customers = new ObservableCollection<Customer>(customers.Distinct());

或者,作为变体,您可以立即修改您的查询和 distinct:

foreach (
var customer in
    collListItem.Select(
        item =>
        new Customer
            {
                Persona = item["Persona"].ToString(),
                CustomerName = item["Title"].ToString()
            }).Distinct())
{
    customers.Add(customer);
}

关于c# - 如何使 ObservableCollection 中的项目独一无二?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32063678/

相关文章:

c# - Unity/C#、NUnit 可并行化属性

java - 类型转换异常

multithreading - 在线程中更改 Observable 集合(绑定(bind)到 JavaFX 节点)

java - 在 Java 8 流的 filter() 和 map() 中使用相同的变量

java - 反转 ArrayList 的最简单方法是什么?

java - 在 Java 中使用就地集合初始化器的缺点是什么

c# - 向 MS Chart 控件 C# 添加滚动条

c# - 如何更新特定部分中的特定ini键?

c# - 将 Web API 与 HTML 页面一起使用

C# 将 Func<T1, object> 转换为 Func<T1, T2>