【问题标题】:Convert a list of objects to an array of one of the object's properties将对象列表转换为对象属性之一的数组
【发布时间】:2011-01-21 23:53:47
【问题描述】:

假设我有以下课程:

public class ConfigItemType
{
    public string Name { get; set; }
    public double SomeOtherThing { get; set; }
}

然后我列出以下类 (List<ConfigItemType> MyList)

现在我有一个带有以下签名的方法:

void AggregateValues(string someUnrelatedValue, params string[] listGoesHere)

如何使用ConfigItemType.Name 中的值作为参数字符串数组将MyList 放入listGoesHere

我相当确定 Linq 可以做到这一点....但是 MyList 上没有 select 方法(这是我会使用的)。

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    你正在寻找

    MyList.Select(x=>x.Name).ToArray();
    

    由于 Select 是一个扩展方法,请确保通过添加一个

    来添加该命名空间

    using System.Linq

    到您的文件 - 然后它将与 Intellisense 一起显示。

    【讨论】:

    • 我也是这么想的。但 Select 不会出现在智能感知中。
    • 啊啊啊啊!我错过了 linq 包含!
    • 需要使用System.Data.Linq;然后按照 BrokenGlass 回答
    • 我是哑巴!呃,好吧。免费代表帮助我解决这个问题。
    • 很棒的解决方案。我想访问我的对象列表中的字符串“id”。工作完美List<String> somestringlist = myobjectlist.Select(x => x.id).ToList();
    【解决方案2】:

    我相当确定 Linq 可以做到这一点....但 MyList 上没有 select 方法(这是我会使用的)。

    是的,LINQ 可以做到这一点。很简单:

    MyList.Select(x => x.Name).ToArray();
    

    问题很可能是您没有对System.Core 的引用,或者您缺少System.Linqusing 指令。

    【讨论】:

      【解决方案3】:

      这也应该有效:

      AggregateValues("hello", MyList.ConvertAll(c => c.Name).ToArray())
      

      【讨论】:

        【解决方案4】:

        对于像我一样卡在.NET 2.0的大家,试试下面的方法(适用于OP中的例子):

        ConfigItemList.ConvertAll<string>(delegate (ConfigItemType ci) 
        { 
           return ci.Name; 
        }).ToArray();
        

        ConfigItemList 是您的列表变量。

        【讨论】:

        • 感谢 .NET 2.0 人群的发帖!
        猜你喜欢
        • 2019-02-10
        • 2017-07-07
        • 1970-01-01
        • 2021-11-02
        • 2022-12-08
        • 2021-02-15
        • 1970-01-01
        • 1970-01-01
        • 2019-12-16
        相关资源
        最近更新 更多