用linq和lambda比较两个列表,其中一个是字符串,另一个是长整数

阿夫辛·加兹(Afshin Ghazi)

我在这里已经读了很多书,但是在查询的最后一部分中找不到正确比较两个列表的答案,因为一个列表是字符串列表,而另一个是长列表。对于熟悉linq的人来说应该很容易。

清单1:

var fileContactIds = new List<string> { 
    "5678765", "2135123", "12341234", "341234123", "12341234123",
    "2341234123", "341234123", "123412341", "13342354","12342341",
    "123412322", "163341234", "2345234115", "8967896", "75626234" 
};

清单2:发自 JsonConvert.DeserializeObject<RelatedContacts>(json)?.list

样本:

{  
   "type":"com.kurtosys.api.userprofile.domain.RelatedContactList",
   "list":[  
      {  
         "objectlistid":5678765,
         "objectlisttypeid":4567876,
         "objectlistname":"ALL.National",
         "clienttaxonomyid":765677,
         "clienttaxonomy":"National Wholesaler",
         "order":1,
         "contacts":[  
            {  
               "personid":7654345678,
               "fullname":"Person Jallo",
               "userid":876567,
               "userclientcode":"5678765",
               "contactdetails":[  
                  {  
                     "contactid":8765567,
                     "contacttypeid":4565,
                     "contactdata":"[email protected]"
                  },
                  {  
                     "contactid":876545678,
                     "contacttypeid":4565,
                     "contactdata":"Baltimore,MD,21209,United States"
                  },
                  {  
                     "contactid":87654567,
                     "contacttypeid":4584,
                     "contactdata":"410-413-2640"
                  }
               ]
            }
         ]
      },
      {  
         "objectlistid":765678,
         "objectlisttypeid":40400461,
         "objectlistname":"RM.Internal",
         "clienttaxonomyid":7567898,
         "clienttaxonomy":"Internal Regional Wholesaler",
         "order":2,
         "contacts":[  
            {  
               "personid":56789876,
               "fullname":"Jackson Man",
               "userid":876567,
               "userclientcode":"12341234",
               "contactdetails":[  
                  {  
                     "contactid":309598309,
                     "contacttypeid":76546,
                     "contactdata":"mister.jackson@@site.com.com"
                  },
                  {  
                     "contactid":876567,
                     "contacttypeid":4581,
                     "contactdata":"Baltimore,MD,21209,United States"
                  },
                  {  
                     "contactid":876567,
                     "contacttypeid":2342,
                     "contactdata":"123-413-2604"
                  }
               ]
            }
         ]
      },
      {  
         "objectlistid":309571364,
         "objectlisttypeid":40400461,
         "objectlistname":"RM.External",
         "clienttaxonomyid":309580710,
         "clienttaxonomy":"External Regional Wholesaler",
         "order":3,
         "contacts":[  
            {  
               "personid":302736188,
               "fullname":"Phal Sumi",
               "userid":303826019,
               "userclientcode":"1016023",
               "contactdetails":[  
                  {  
                     "contactid":309598253,
                     "contacttypeid":2342,
                     "contactdata":"[email protected]"
                  },
                  {  
                     "contactid":309611930,
                     "contacttypeid":2342,
                     "contactdata":"Baltimore,MD,21209,United States"
                  },
                  {  
                     "contactid":34234132,
                     "contacttypeid":3422,
                     "contactdata":"342-803-1793"
                  }
               ]
            }
         ]
      }
   ]
}

并映射到:

namespace Company.AppServices.RestClient.Users
{

    public class RelatedContacts
    {
        public string type { get; set; }
        public List<RelatedContactList> list { get; set; }
    }

    public class RelatedContactList
    {
        public long objectlistid { get; set; }
        public long objectlisttypeid { get; set; }
        public string objectlistname { get; set; }
        public long clienttaxonomyid { get; set; }
        public string clienttaxonomy { get; set; }
        public int order { get; set; }
        public List<PersonContact> contacts { get; set; }
    }

    public class PersonContact
    {
        public long personid { get; set; }
        public string fullname { get; set; }
        public long userid { get; set; }
        public string userclientcode { get; set; }
        public List<ContactType> contactdetails { get; set; }
    }

    public class ContactType
    {
        public long contacttypeid { get; set; }
        public string contacttype { get; set; }
        public long contactid { get; set; }
        public long personid { get; set; }
        public string contactdata { get; set; }
        public int countrycode { get; set; }
        public int areacode { get; set; }
        public long phonenumber { get; set; }

    }
}}

我的查询:

var res =
    relatedContact.SelectMany(
     rc =>
     {
         return rc.contacts
            .Select(pc =>
            {
                return new
                {
                    ClientId = pc.userclientcode,
                    Description = rc.clienttaxonomy,
                    Fullname = pc.fullname,
                    Email = pc.contactdetails != null && pc.contactdetails.Count >= 1 ? pc.contactdetails[0].contactdata : "",
                    Address = pc.contactdetails != null && pc.contactdetails.Count >= 2 ? pc.contactdetails[1].contactdata : "",
                    PhoneNumber = pc.contactdetails != null && pc.contactdetails.Count >= 3 ? pc.contactdetails[2].contactdata : "",
                };
            });
     })
    .Where(
     el =>
     {    
       //Stuck here -> need only items where userclientcode in second list matches an item in first list.             
     }
    );
吉拉德·格林(Gilad Green)

使用.Contains了IDS列表:

.Where(item => fileContactIds.Contains(item.ClientId))

一起(加上一些重构):

var res = relatedContact.SelectMany(rc => rc.contacts.Select(pc => new
            {
                ClientId = pc.userclientcode,
                Description = rc.clienttaxonomy,
                Fullname = pc.fullname,
                Email = pc.contactdetails != null && pc.contactdetails.Count >= 1 ? pc.contactdetails[0].contactdata : "",
                Address = pc.contactdetails != null && pc.contactdetails.Count >= 2 ? pc.contactdetails[1].contactdata : "",
                PhoneNumber = pc.contactdetails != null && pc.contactdetails.Count >= 3 ? pc.contactdetails[2].contactdata : "",
            }))
           .Where(el => fileContactIds.Contains(el.ClientId));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用两个j变量来重塑数据,其中一个是字符串?

来自分类Dev

我想在两个列表之间应用除非。一个列表是 MailAddress 格式,另一个是字符串(转换为列表))

来自分类Dev

Knockout中的CSS绑定可以绑定两个类,其中一个是动态的,另一个是静态的,并且经过评估

来自分类Dev

如何在包含两个正则表达式的文件中打印行,其中一个是另一个的子字符串

来自分类Dev

如何连接两个字符串(一个是变量),同时仍然能够重用其中一个参数(变量)?

来自分类Dev

两个字符之间的Excel子字符串(其中一个是第二个实例)

来自分类Dev

合并两个熊猫数据框,其中一个是另一个的子集(或仅填充列的子集)

来自分类Dev

如果其中一个是字符串,如何对两个十六进制值进行异或运算?

来自分类Dev

在Java中加两次,一个是字符串,另一个是HH:mm的日期

来自分类Dev

如何从两个向量(一个是键,另一个是值)在R中创建一个列表?

来自分类Dev

将两个列表(其中一个是列表列表)映射到字典中

来自分类Dev

两个div元素,一个是固定元素,另一个是auto。怎么修?

来自分类Dev

有两个不同的项目,一个是Redis,另一个是MongoDB?

来自分类Dev

C#两个时间的差值一个是xml另一个是当前时间

来自分类Dev

计算两个变量之间的天数(一个是变量,另一个是事实变量)

来自分类Dev

如何从两个列表中创建堆叠条形图:考虑一个是集群,另一个是标志

来自分类Dev

比较两张地图以查看其中一个是否为子集

来自分类Dev

我需要将2个类添加到div中,一个是字符串,另一个是来自变量

来自分类Dev

如何显示包含两个字符的文件名,其中一个是c?

来自分类Dev

炸药 如何以两个唯一的属性为条件,其中一个是哈希键?

来自分类Dev

两个相同的步骤定义,但一个是给定的,一个是然后的

来自分类Dev

两个命令的输出如何不同,一个是另一个的符号链接?

来自分类Dev

如何合并两个不同长度的数据帧,一个是另一个的子集

来自分类Dev

通过ID合并R中的两个Dataframes,一个是另一个的子集

来自分类Dev

给定两个音频文件,其中一个是另一个的片段,是否有 python 方法来查找片段何时在原始文件中重放?

来自分类Dev

合并两个默认的Ansible主机文件,其中一个是ec2.py?

来自分类Dev

垂直对齐matplotlib中的两个图,前提是其中一个是imshow图?

来自分类Dev

如何配置虚拟网络以使用两个NIC?一个是NAT,另一个是NAT

来自分类Dev

两列布局。为什么一个是Float:Left,另一个是Float:Right?

Related 相关文章

  1. 1

    如何使用两个j变量来重塑数据,其中一个是字符串?

  2. 2

    我想在两个列表之间应用除非。一个列表是 MailAddress 格式,另一个是字符串(转换为列表))

  3. 3

    Knockout中的CSS绑定可以绑定两个类,其中一个是动态的,另一个是静态的,并且经过评估

  4. 4

    如何在包含两个正则表达式的文件中打印行,其中一个是另一个的子字符串

  5. 5

    如何连接两个字符串(一个是变量),同时仍然能够重用其中一个参数(变量)?

  6. 6

    两个字符之间的Excel子字符串(其中一个是第二个实例)

  7. 7

    合并两个熊猫数据框,其中一个是另一个的子集(或仅填充列的子集)

  8. 8

    如果其中一个是字符串,如何对两个十六进制值进行异或运算?

  9. 9

    在Java中加两次,一个是字符串,另一个是HH:mm的日期

  10. 10

    如何从两个向量(一个是键,另一个是值)在R中创建一个列表?

  11. 11

    将两个列表(其中一个是列表列表)映射到字典中

  12. 12

    两个div元素,一个是固定元素,另一个是auto。怎么修?

  13. 13

    有两个不同的项目,一个是Redis,另一个是MongoDB?

  14. 14

    C#两个时间的差值一个是xml另一个是当前时间

  15. 15

    计算两个变量之间的天数(一个是变量,另一个是事实变量)

  16. 16

    如何从两个列表中创建堆叠条形图:考虑一个是集群,另一个是标志

  17. 17

    比较两张地图以查看其中一个是否为子集

  18. 18

    我需要将2个类添加到div中,一个是字符串,另一个是来自变量

  19. 19

    如何显示包含两个字符的文件名,其中一个是c?

  20. 20

    炸药 如何以两个唯一的属性为条件,其中一个是哈希键?

  21. 21

    两个相同的步骤定义,但一个是给定的,一个是然后的

  22. 22

    两个命令的输出如何不同,一个是另一个的符号链接?

  23. 23

    如何合并两个不同长度的数据帧,一个是另一个的子集

  24. 24

    通过ID合并R中的两个Dataframes,一个是另一个的子集

  25. 25

    给定两个音频文件,其中一个是另一个的片段,是否有 python 方法来查找片段何时在原始文件中重放?

  26. 26

    合并两个默认的Ansible主机文件,其中一个是ec2.py?

  27. 27

    垂直对齐matplotlib中的两个图,前提是其中一个是imshow图?

  28. 28

    如何配置虚拟网络以使用两个NIC?一个是NAT,另一个是NAT

  29. 29

    两列布局。为什么一个是Float:Left,另一个是Float:Right?

热门标签

归档