我对这个令人困惑的标题感到抱歉,但我找不到更好的方法来解释我的问题。
我有一个对象列表myList
,让我们称之为MyObject
。对象看起来像这样:
Class MyObject
{
int MYInt{get;set;}
string MYString{get;set;}
}
List<MyObject> myList;
...
我正在寻找一种很好/简短/奇特的方式来从List<string>
创建myList
,我只使用MyString
属性。
我可以使用myList.forEach()
执行此操作,但我想知道是否有更好的方法
谢谢!
答案 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();