如何在对象列表中搜索匹配项
本文关键字:搜索 列表 对象 | 更新日期: 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
- 根据houseid 对人群进行分组
- 获取包含少于5项的组
- 为每个组创建包含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);
}