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

时间:2011-11-03 20:49:12

标签: c# linq

以下代码采用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);

是否可以使用一个查询执行此操作?

2 个答案:

答案 0 :(得分:2)

如果您真的想要展平这样的属性,可以将数组提供给SelectMany()

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

答案 1 :(得分:1)

您可以使用ForEach:

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