使用 Linq 选择类的属性以返回 IEnumerable<T>

Posted

技术标签:

【中文标题】使用 Linq 选择类的属性以返回 IEnumerable<T>【英文标题】:Using Linq to Select properties of class to return IEnumerable<T> 【发布时间】:2011-06-18 13:25:49 【问题描述】:

如果我有一个 SortedList&lt;int, MyClass&gt; 并且我想从该类返回一个新的 IEnumerable&lt;T&gt; 属性,我该怎么做?

我尝试了SortedList.Select(x=&gt;x.MyProperty, x.AnotherProperty),但它不起作用。

谢谢。

【问题讨论】:

“可枚举的属性”应该如何呈现?能否给我们一个示例,最好是伪代码? 【参考方案1】:

你可以返回一个匿名对象:

var result = SortedList.Select(x => new  
    x.Value.MyProperty, 
    x.Value.AnotherProperty 
);

或者如果你想使用当前方法范围之外的结果,你可以定义一个自定义类型:

IEnumerable<MyType> result = SortedList.Select(x => new MyType  
    Prop1 = x.Value.MyProperty, 
    Prop2 = x.Value.AnotherProperty 
);

【讨论】:

谢谢。正在撞墙的那一刻,忘记了 x => new .......

以上是关于使用 Linq 选择类的属性以返回 IEnumerable<T>的主要内容,如果未能解决你的问题,请参考以下文章

具有匿名类型和用户定义类型的 LINQ 选择查询

LINQ 表达式返回属性值?

Linq 查询以返回具有特定属性值的嵌套数组

NHibernate 3 LINQ:如何过滤 IQueryable 以仅选择 T 类及其子类的对象?

C# LINQ - 按属性分组列表,然后按不同组选择

与 LINQ 的类的属性不同 [重复]