使用 linq 返回对象的特定属性列表

Posted

技术标签:

【中文标题】使用 linq 返回对象的特定属性列表【英文标题】:Return list of specific property of object using linq 【发布时间】:2012-07-19 10:28:45 【问题描述】:

给定一个这样的类:

public class Stock

    public Stock() 
    public Guid StockID  get; set; 
    public string Description  get; set; 

假设我现在有一个List<Stock>。如果我想检索所有 StockID 的列表并将其填充到 IEnumerable 或 IList 中。显然我可以做到。

List<Stock> stockItems = new List<Stock>();
List<Guid> ids = new List<Guid>();

foreach (Stock itm in stockItems) 

    ids.Add(itm.StockID);

但是有什么方法可以使用 Linq 来实现相同的结果吗?我认为Distinct() 可能会这样做,但无法弄清楚如何达到预期的结果。

【问题讨论】:

【参考方案1】:
var list = stockItems.Select(item => item.StockID).ToList();

【讨论】:

大声笑,现在我觉得自己像个白痴。我应该解决这个问题的。谢谢! 如何进行逆过程? @Pedro77 使用.Reverse()?【参考方案2】:

你也可以这样做:

ids = stockItems.ConvertAll<Guid>(o => o.StockID);

【讨论】:

【参考方案3】:

这样的事情怎么样?这可以简化吗?

List<TranCode> alltrans = new List<TranCode>();

foreach (var bh in obj1.obj2WithCollection.obj2Collection)

    alltrans.AddRange(bh.obj3WithCollection.Select(e => e.TransactionCode).ToList());

【讨论】:

尝试使用SelectMany()这样的函数obj1.obj2WithCollection.obj2Collection.SelectMany(bh =&gt; bh.obj3WithCollection.Select(e =&gt; e.TransactionCode));见***.com/questions/1191054/…

以上是关于使用 linq 返回对象的特定属性列表的主要内容,如果未能解决你的问题,请参考以下文章

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

如何使用 LINQ 从对象列表中获取唯一的属性列表?

如何获取 linq `ForEach` 语句以返回有关为每个列表对象进行的方法调用的数据?

比较两个列表并使用 linq 返回不匹配的项目

如何使用 linq 查询具有嵌套列表的对象?

LINQ 表达式返回属性值?