从List <t> </t> </t>中的属性列出<t>

时间:2011-09-13 18:04:25

标签: c# generics

我无法找到关于如何做到这一点的更多信息。我可能没有正确的术语。

我有一个对象列表:

class Cat()
{
   public string Name { get; set; }
}

List<Cat> cats = new List<Cat>();

cats.add(new Cat() { Name = "Felix" } );
cats.add(new Cat() { Name = "Fluffy" } );

如何从Name属性中获取字符串列表,如下所示:

{ "Felix", "Fluffy" }

10 个答案:

答案 0 :(得分:9)

LINQ Select运营商是您的朋友:

cats.Select(c => c.Name).ToList()

我正在使用ToList()来避免延迟评估,并确保您有IList可以使用。

答案 1 :(得分:5)

var names = cats.Select(c => c.Name);

但是如果你仍然需要一个列表使用

List<string> names = cats.ConvertAll(c => c.Name);

答案 2 :(得分:2)

cats.Select(x =&gt; x.Name).ToList()

答案 3 :(得分:2)

cats.Select(cat => cat.Name).ToList();

(from cat in cats select cat.Name).ToList();

如果您实际上不需要List作为输出,则可以不使用.ToList()

答案 4 :(得分:1)

如果您不允许(或不想)使用var,扩展方法和Linq或需要字符串列表:

List<string> names = cats.ConvertAll(cat => cat.Name);

答案 5 :(得分:0)

var names = (from cat in cats
             select cat.Name).ToList();

答案 6 :(得分:0)

使用linq:

var names = cats.Select(x => x.Name).ToList();

答案 7 :(得分:0)

var listOfNames = (from c in cats
                   select c.Name).ToList();

答案 8 :(得分:0)

试试这个:

cats.Select(e => e.Name).ToArray();

我对LINQ很新,所以我不保证这样做。

另外,添加System.Linq命名空间:

using System.Linq;

答案 9 :(得分:0)

cats.Select(cat => cat.Name).ToList()