如何在对象列表中搜索匹配项

本文关键字:搜索 列表 对象 | 更新日期: 2023-09-27 18:04:36

嗨,我有一个这样的类。

  class man    
  {
    public string name { get; set; }
    public string houseid { get; set; }
   }

我有一个这样的人的名单。

 List<man> ppl = new List<man>();

我想搜索是否有不止一个人具有相同的houseid。如果不止一个人有相同的房号如果有相同房号的人数不超过限制5我想要那个房号那个房号出现的次数是多少?简单地说,如果有少于5人的房子,我想要那个户号以及户号下的男性人数?怎么做呢?

如何在对象列表中搜索匹配项

您可以使用:

var houses = ppl.GroupBy(x => x.houseid)  // 1
             .Where(x => x.Count() < 5) // 2
             .Select(x => new { HouseID = x.Key, Population = x.Count() }); // 3
  1. 根据houseid
  2. 对人群进行分组
  3. 获取包含少于5项的组
  4. 为每个组创建包含House和population id的匿名类型。

听起来你需要一个GroupBy

var houses = ppl.GroupBy(x => x.houseid)
                .Where(g => g.Count() < 5)
                .Select(g => new { Id = g.Key, Count = g.Count());
foreach (var house in houses)
{
    Console.WriteLine("House {0} has a population of {1}", house.Id, house.Count);
}