首页 > 解决方案 > 将两个属性合并到普通列表c#中

问题描述

我试图以某种方式获取包含原始客户ID和sallerid的列表。是否可以使用两次选择然后联合来完成,是否有任何简写方式。代码如下:

public class Model
{
    public int CustomerId { get; set; }

    public int SallerId { get; set; }
}

var list = new List<Model>
{
    new Model(),
    new Model()
};

var customerIds = list.Select(model => model.CustomerId);
var sallerIds = list.Select(model => model.SallerId);
var userIds = customerIds.Union(sallerIds);

如何通过一个操作而不是三个操作来获取 userId

标签: c#.netlinq

解决方案


您可以在一个管道中执行此操作,如下所示:

var result = list.SelectMany(x => new int[] {x.CustomerId, x.SallerId})
                 .Distinct();

这基本上将每个对象投影CustermerIdSallerId一个数组中,然后折叠嵌套序列,最后调用Distinct删除重复项。


推荐阅读