如何在对象列表或对象的一个​​或多个属性上使用Distinct

时间:2017-05-17 04:53:00

标签: c# linq

我需要获取唯一送货地址列表。

var shippingAddresses = ShopApi.Checkout.GetShippingAddresses(Shop.CommerceContext.AccountId).ToList();

这将为我提供送货地址对象列表,但其中两个对象 ID 列具有相同的值。如何过滤该列表或仅获取列表中的一个值?

我的 ShippingAddress 对象如下所示。

public string Id { get; set; }
public string CustomerId { get; set; }
public string Address { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string CountryId { get; set; }

2 个答案:

答案 0 :(得分:1)

我有适合您情况的解决方案。您可以再次过滤列表,每个Id值只能获得1行

public class ShippingAddresses
{
    public string Id { get; set; }
    public string CustomerId { get; set; }
    public string Address { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public string CountryId { get; set; }
}

List<ShippingAddresses> shippingAddresses = new List<ShippingAddresses>();

//This statement will help you only get 1 row for each ID value
shippingAddresses = shippingAddresses.GroupBy(p => p.Id).Select(p => p.First()).ToList();

答案 1 :(得分:0)

在该ShippingAddress对象的某处,有一个底层数据库查询。该查询需要修改为仅包含唯一结果......如下所示:

(from dbo in database.ShippingAddress
 select dbo.Id).Distinct()