【问题标题】:Return list of specific property of object using linq使用 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() 可能会这样做,但无法弄清楚如何达到预期的结果。

【问题讨论】:

    标签: c# .net linq linq-query-syntax


    【解决方案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));stackoverflow.com/questions/1191054/…
      猜你喜欢
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-11
      相关资源
      最近更新 更多