使用LINQ选择多个字段的简便方法

Jai*_*der 1 c# linq

看一下这个示例对象,

public class Demo
{
    public string DisplayName { get; set; }

    public int Code1 { get; set; }

    public int Code2 { get; set; }

    ...
}
Run Code Online (Sandbox Code Playgroud)

并且我想说我想将所有代码(Code1,Code2)放在一个列表中(IEnumerable)...一种方式就是这个:

var codes = demoList.Select(item => item.Code1).ToList();
codes.AddRange(demoList.Select(item => item.Code2));
//var uniqueCodes = codes.Distinct(); // optional
Run Code Online (Sandbox Code Playgroud)

我知道这不是一个好的既不是最佳解决方案,所以我很想知道什么是更好的方法/(最佳实践)?

Ani*_*Ani 6

怎么样SelectMany:

var codes = demoList.SelectMany(item => new[] { item.Code1, item.Code2 });
Run Code Online (Sandbox Code Playgroud)

顺便说一下,在LINQ中进行连接的惯用方法是Concat:

var codes = demoList.Select(item => item.Code1)          
                    .Concat(demoList.Select(item => item.Code2));
Run Code Online (Sandbox Code Playgroud)

  • @Jason嗯,这个解决方案有效,不像你的.如果您有一种更简单的方法*来产生所需的结果*,那么请务必分享它. (5认同)