为了账号安全,请及时绑定邮箱和手机立即绑定

Linq Union,避免空数据和重复数据

Linq Union,避免空数据和重复数据

Go
紫衣仙女 2021-05-04 13:13:20
我正在尝试编写一个linq查询来合并2个集合,下面对此进行了说明:public class VoteData{    public string Name{get;set;}    public string VoteFunction  {get;set;}    public string Area {get;set;}    public string Sector {get;set;}    public string Email {get;set;}    public string VoterEmail {get; set;}}public class DirectoryData{    public string VoteFunction  {get;set;}   public string Area {get;set;}   public string Sector {get;set;}   public string PrimaryEmail {get;set;}       public string VoterEmail {get; set;}}Linq查询: var result = (from r in voteList select new { r.Email, r.Area, r.Sector, r.VoteFunction }).Union              (from d in directoryDataList select new { Email = d.PrimaryEmail, d.Area, d.Sector, d.VoteFunction });现在假设此查询返回如下结果:没有电子邮件区域部门投票功能投票人电子邮件================================================== ====================1. abc @ gmail美国IT销售票务员2 @ gmail2. abc @ gmail空IT分析师表决器2 @ gmail3. abc @ gmail美国IT空null选民2 @ gmail4. abc @ gmail欧洲技术公司null null选民2 @ gmail5. abc @ gmail欧洲帐户分析师表决器2 @ gmail6. abc @ gmail欧洲null分析员选民2 @ gmail7. abc @ gmail美国IT null投票者1 @ gmail================================================== ====================还有一个领域VoterEmail。所以基本上,我想算每票Area,Sector和VoteFunction。现在在上面的结果中,我想排除结果3和结果6。结果3是因为它的面积和扇区也出现在同一选民的结果1中,而我仍然想保留结果7因为它具有不同的选民。与结果6相似,它具有area和voteFunction,结果5也存在。有什么解决办法吗?
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

因此,您希望将具有相同值的项目组(区域,部门,选民电子邮件)组成。如果这些组中的任何一个包含多个项目,则显然您有几个具有相同值的对象(“区域”,“部门”,“选民电子邮件”),并且您只想保留其中一个。


您说要排除No 3,因为它与No 1具有相同的值。同样,我可以说我要排除No 1,因为它与No 3具有相同的值。请问它是1还是3,还是可以?我只是选择其中一个?


var finalResult = unionResult

    .GroupBy(item => new     // make groups of items with same Area / Sector / VoterEmail

    {

        Area = item.Area,

        Sector = item.Sector,

        VoterEmail = item.VoterEmail,

    });

    // all items in every group have the same Area/Sector/VoterEmail

    .Select (group => group.First()); // from every group take the first one


查看完整回答
反对 回复 2021-05-08
  • 1 回答
  • 0 关注
  • 334 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信