使用LINQ:如何从类集合中返回属性数组?

jp2*_*ode -2 c# linq lambda

这是一个有TheProperty问题的基础类:

class BasicClass {
  public BasicClass() {
    TheProperty = new Object();
    Stamped = DateTime.Now;
  }
  public object TheProperty { get; set; }
  public DateTime Stamped { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

这是基本清单:

class BasicList {
  private List<BasicClass> list;
  public BasicList() {
    list = new List<BasicClass>();
  }
  public BasicClass this[object obj] {
    get { return list.SingleOrDefault(o => o.TheProperty == obj); }
  }
  public void Add(BasicClass item) {
    if (!Contains(item.TheProperty)) {
      list.Add(item);
    }
  }
  public bool Contains(object obj) {
    return list.Any(o => o.TheProperty == obj); // Picked this little gem up yesterday!
  }
  public int Count { get { return list.Count; } }
}
Run Code Online (Sandbox Code Playgroud)

我想添加一个类来BasicList返回一个项目数组.

我可以这样写,使用传统的C#:

public object[] Properties() {
  var props = new List<Object>(list.Count);
  foreach (var item in list) {
    props.Add(item.TheProperty);
  }
  return props.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

...但是如何使用LINQ或Lambda查询编写?

I4V*_*I4V 7

return list.Select(p=>p.TheProperty).ToArray()
Run Code Online (Sandbox Code Playgroud)