c#从列表中的字段中获取列表

时间:2010-09-01 23:07:37

标签: c# .net list foreach

我对这个令人困惑的标题感到抱歉,但我找不到更好的方法来解释我的问题。

我有一个对象列表myList,让我们称之为MyObject。对象看起来像这样:

Class MyObject
{
    int MYInt{get;set;}
    string MYString{get;set;}
}

List<MyObject> myList;
...

我正在寻找一种很好/简短/奇特的方式来从List<string>创建myList,我只使用MyString属性。

我可以使用myList.forEach()执行此操作,但我想知道是否有更好的方法

谢谢!

3 个答案:

答案 0 :(得分:16)

使用LINQ:

var list = myList.Select(o => o.MYString);

返回IEnumerable<string>。要获得List<string>,只需添加对ToList()的调用:

var list = myList.Select(o => o.MYString).ToList();

然后像往常一样迭代结果:

foreach (string s in list)
{
    Console.WriteLine(s);
}

答案 1 :(得分:2)

如果输入和输出列表都是List<T>,则不需要LINQ。您可以改为使用ConvertAll方法:

List<string> listOfStrings = myList.ConvertAll(o => o.MYString);

答案 2 :(得分:1)

这是使用集成查询语法的Ahmad's answer

var strings = from x in myList
              select x.MYString;

List<string> list = strings.ToList();

这也可以写成:

List<string> list = (from x in myList
                     select x.MYString).ToList();