C# 如何有效地从IReadOnlyCollection获取属性作为列表?

C# 如何有效地从IReadOnlyCollection获取属性作为列表?,c#,C#,我有一个名为MyProducts的类的iRadonlyCollection,如下所示: [ { "Id": 2987, "Name": Brick, ... }, { "Id": 35246, "Name": Wood, ... }, ... ] [ "2987", "35246" ] 如何有效地将ID作为如下列表获取: [ {

我有一个名为MyProducts的类的iRadonlyCollection,如下所示:

[
    {
        "Id": 2987,
        "Name": Brick,

        ...
    },
    {
        "Id": 35246,
        "Name": Wood,

        ...
    },

...

]
[
    "2987",
    "35246"
]  
如何有效地将ID作为如下列表获取:

[
    {
        "Id": 2987,
        "Name": Brick,

        ...
    },
    {
        "Id": 35246,
        "Name": Wood,

        ...
    },

...

]
[
    "2987",
    "35246"
]  
我宁愿不使用循环。例如,是否有一个内置函数可以帮助我解决问题?

只需使用LINQ:

List<int> idList = products.Select(p => p.Id).ToList();

这并不比普通循环更有效,但它更短,因此可能更具可读性。

用非LINQ解决方案补充Tim的答案:

List<int> ids = new List<int>(products.Count);
for(int i = 0; i < products.Count; ++i)
    ids.Add(products[i].Id);