如何在对象列表或对象的一个或多个属性上使用 Distinct [重复]
Posted
技术标签:
【中文标题】如何在对象列表或对象的一个或多个属性上使用 Distinct [重复]【英文标题】:How to use Distinct on a list of object or on one or more properties of the object [duplicate] 【发布时间】:2017-05-17 04:53:00 【问题描述】:我需要获取唯一送货地址的列表。
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;
【问题讨论】:
你如何决定你想要哪一个? 无需决定。我只想要唯一的列表地址。 【参考方案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();
【讨论】:
【参考方案2】:在该 ShippingAddress 对象的某处,有一个底层数据库查询。该查询需要修改为仅包含唯一结果...如下所示:
(from dbo in database.ShippingAddress
select dbo.Id).Distinct()
【讨论】:
我不能这样做,因为查询部分位于 DLL 中。以上是关于如何在对象列表或对象的一个或多个属性上使用 Distinct [重复]的主要内容,如果未能解决你的问题,请参考以下文章