在一个查询中选择多个类属性

本文关键字:选择 属性 一个 查询 | 更新日期: 2023-09-27 18:13:38

下面的代码接受类C的集合,并创建由两个属性a和B的值组成的集合。a和B被放入同一个集合中:

class A
{
    public int x { get; set; }
}
class B
{
    public int x { get; set; }
}
class C
{
    public A A { get; set; }
    public B B { get; set; }
}
..........
var items = new List<C>()
                {
                    new C()
                        {
                            A = new A() {x = 1},
                            B = new B() {x = 2}
                        },
                    new C()
                        {
                            A = new A() {x = 3},
                            B = new B() {x = 4}
                        },
                };
var qA = from item in items
         select (object)item.A;
var qB = from item in items
         select (object)item.B;
var qAll = qA.Concat(qB);

有可能用一个查询做到这一点吗?

在一个查询中选择多个类属性

如果你真的想要像那样平坦化属性,你可以将数组提供给SelectMany():

var qAll = items.SelectMany(item => new object[] { item.A, item.B });

您可以使用ForEach:

var qAll = new List<object>();
items.ForEach(item => { qAll.Add(item.A); qAll.Add(item.B) });