如何在我的所有财产中使用“与众不同”

时间:2019-10-29 13:08:03

标签: c# linq mvvm

我有一种方法可以创建代理列表。 此代理列表包含“ Nom”,“ Prenom”,“ Matricule”,“ Mail”。

我使用.distinct()对它们进行排序,但这只考虑了“ Nom”,“ Prenom”,“ Matricule”。这不会检查电子邮件是否不同。我该如何进行?

创建我的代理人列表:

private ObservableCollection<AgentMailModel> _Agents;
public ObservableCollection<AgentMailModel> Agents
{
    get
    {
        return _Agents;
    }
    set
    {
        if (value != _Agents)
        {
            _Agents = value;
            RaisePropertyChanged("Agents");
        }
    }
}

foreach (Destinataire dst in (await _dataService.GetDestinatairesAsync()))
        _TmpAgents.Add(new AgentMailModel() { Matricule = dst.Matricule, Nom = dst.Nom, Prenom = dst.Prenom, Mail = dst.Mail });

foreach (AgentModel ag in (await _dataService.GetAgentsContratsAsync()))
        _TmpAgents.Add(new AgentMailModel() { Matricule = ag.Matricule, Nom = ag.Nom, Prenom = ag.Prenom, Mail = ag.Mail });

Agents = new ObservableCollection<AgentMailModel(_TmpAgents.Distinct());

我在WPF中的列表:

list

我的数据库:

db

如您所见:
它显示“carré”(因为“ Nom”是不同的,它也适用于不同的“ Prenom”或“ Matricule”),并且只有一个“ carre”(没有“é”)。

Distinct()对我的邮件不起作用。有提示吗?

1 个答案:

答案 0 :(得分:2)

您有两种可能。

第一个是创建IEqualityComparer类并实现全面比较。 您可以找到示例here

第二个是将对象转换为JSON,并由字符串而不是对象进行比较。