c# - 将两个属性联合到普通列表 c#

标签 c# .net linq

我正在尝试以某种方式获取同时包含 customerid 和 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

最佳答案

您可以按如下方式在一个管道中完成:

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

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

关于c# - 将两个属性联合到普通列表 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53686056/

相关文章:

C# 过滤 XML 的属性名称

C#根据另一个列表(不同类)的值序列对列表进行排序

c# - 带有工具栏和状态栏的 WPF DockPanel

C# 如何确保所选节点在失去焦点时保持突出显示

c# - 两种不相等的类型应该是

c# - 如何让 .NET 的 Path.Combine 将正斜杠转换为反斜杠?

c# - 查询以检测重复行

c# - 如何以简单的方式搭建数据库表?

c# - 在代码隐藏 asp.net 中默认选中的复选框列表项

c# - 使用字符串实习来减少网络客户端的内存使用