从列表C#中获取组合的不同项

Ath*_*hul 5 c# linq asp.net

我的对象就像这样

    public class Region
{
    public Region();

    public string City { get; set; }
    public int PostCode { get; set; }
    public string WfRegion { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在这个类中有这个对象的列表,其中数据是这样的

Rodney , 7845 , Auckland
Rodney , 3435 , Auckland
Rodney , 4566 , Auckland
Rodney , 3445 , North Island
Run Code Online (Sandbox Code Playgroud)

我想过滤这个列表,这样我就可以获得这样的输出

    Rodney , 7845 , Auckland
    Rodney , 3445 , North Island
Run Code Online (Sandbox Code Playgroud)

(所有可能的城市和地区组合,无论邮政编码).我写了一些像这样的查询

      var cities = regionsData.DistinctBy(p => 
p.WfRegion).DistinctBy(p=>p.PostCode).DistinctBy(p => p.City).ToList();
Run Code Online (Sandbox Code Playgroud)

但这只是给我一个第一项的结果

        Rodney , 7845 , Auckland
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

juh*_*arr 7

你需要使用 GroupBy

var result = regionsData.GroupBy(p => new {p.WfRegion, p.City})
    .Select(g => g.First())
    .ToList();
Run Code Online (Sandbox Code Playgroud)

这将为您提供区域和城市的分组,然后您可以选择每个组中的第一个项目.