在List<T>中,从属性中获取List<T>。

4

我没有找到关于如何做这件事的太多资料。我可能没有使用正确的术语。

我有一个对象列表:

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" }

1
你是否想把列表序列化为JSON? - Erik Philips
10个回答

9

LINQ中的Select操作符是您的好朋友:

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

我使用 ToList() 来避免延迟加载,并确保您有一个可操作的 IList


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

但如果你还需要一个列表,请使用以下代码:
List<string> names = cats.ConvertAll(c => c.Name);

哇,感谢大家超快的回复。我简直不敢相信这么简单 扇自己耳光。Yuriy,感谢你提供了不使用Linq的方法! - Levitikon

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

或者

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

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

2

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


1

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

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

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

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

0

使用 LINQ:

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

0

试试这个:

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

我对LINQ还很陌生,所以不能保证它能够正常工作。

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

using System.Linq;

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接