Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
206 views
in Technique[技术] by (71.8m points)

c# - Using LINQ: How To Return Array Of Properties from a Class Collection?

Here is a Basic Class with TheProperty in question:

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

Here is the Basic List:

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

I'd like to add a class to BasicList that will return an array of items.

I could write it like this, using traditional C#:

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

...but how would I write that using a LINQ or Lambda query?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
return list.Select(p=>p.TheProperty).ToArray()

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...