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

Return list of specific property of object using linq

提问人:Maxim Gershkovich 提问时间:7/20/2012 更新时间:6/2/2017 访问量:87234

问:

给定这样的类:

public class Stock
{
    public Stock() {}
    public Guid StockID { get; set; }
    public string Description { get; set; }
}

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

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-语法

评论


答:

158赞 Amiram Korach 7/20/2012 #1
var list = stockItems.Select(item => item.StockID).ToList();

评论

4赞 Maxim Gershkovich 7/20/2012
哈哈,好吧,现在我觉得自己像个白痴。我应该解决这个问题。谢谢!
0赞 Pedro77 3/6/2017
我怎样才能做逆过程?
0赞 Amiram Korach 3/6/2017
@Pedro77使用 ?.Reverse()
3赞 Ivan Golović 7/20/2012 #2

你也可以这样做:

ids = stockItems.ConvertAll<Guid>(o => o.StockID);
1赞 user2259416 6/2/2017 #3

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

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

foreach (var bh in obj1.obj2WithCollection.obj2Collection)
{
    alltrans.AddRange(bh.obj3WithCollection.Select(e => e.TransactionCode).ToList());
}

评论

1赞 Dennis Rosenbaum 3/30/2018
尝试使用这样的函数 请参阅 stackoverflow.com/questions/1191054/...SelectMany()obj1.obj2WithCollection.obj2Collection.SelectMany(bh => bh.obj3WithCollection.Select(e => e.TransactionCode));