C# 使用Linq获取具有重复值的表中的单个记录

C# 使用Linq获取具有重复值的表中的单个记录,c#,linq,C#,Linq,表结构: 我想获取以下记录: 因此,地址应遵循以下顺序: Mail Home Work 如果邮件存在,则选择记录;如果检查主页是否存在,则选择记录;如果检查工作是否存在,则选择该记录。您需要先定义优先级 为此,您可以使用一个简单的字典: 输出: Linqpad中的完整示例: 为什么是Bipin邮件?对Mahesh来说应该是什么?为什么?我想选择下面优先级的记录首先它应该选择邮件然后是家,然后在上面的场景中工作Bipin拥有所有三个地址邮件家和工作。所以带邮件的Bipin应该被捡起来。对于

表结构:

我想获取以下记录:

因此,地址应遵循以下顺序:

Mail
Home
Work

如果
邮件
存在,则选择记录;如果检查
主页
是否存在,则选择记录;如果检查
工作
是否存在,则选择该记录。

您需要先定义优先级

为此,您可以使用一个简单的
字典

输出:

Linqpad中的完整示例:


为什么是Bipin邮件?对Mahesh来说应该是什么?为什么?我想选择下面优先级的记录首先它应该选择邮件然后是家,然后在上面的场景中工作Bipin拥有所有三个地址邮件家和工作。所以带邮件的Bipin应该被捡起来。对于Mahesh,我们只有两个地址Home和Mail,因此对于Mahesh,应该提取邮件。类似于帕雷什,只有工作是存在的,所以工作应该被挑选出来。我在你们的表格中看不到任何优先级列。
var AddressMap = new Dictionary<string, int>(){
    {"Mail", 0},
    {"Home", 1},
    {"Work", 2}
};
employees.OrderBy (e => AddressMap[e.Address]) //order 
         .GroupBy (e => e.Id)
         .Select (e => e.FirstOrDefault());