How to LINQ.FOREACH to access parent
Parcels is a List
each Parcel has Owners property w开发者_StackOverflow中文版hich contains List
parcels.Where(p => !p.Owners.IsNullOrEmpty()).SelectMany(p => p.Owners)
                    .OrderByDescending(x => x.RecordingDate ?? x.SaleDate ?? x.DateEntered)
                    .ForEach(owner =>
                    { 
                    /* HERE I need to access to p which was a parent of this Owner */
                    }
Not sure how to rewrite it...
make an anonymous pair to iterate over.
 foreach(var pair in parcels
    .Where(p => p.Owners != null)
    .SelectMany(p => new { o = p.Owners, p })
    .OrderByDescending(x => x.o.RecordingDate ?? x.o.SaleDate ?? x.o.DateEntered)) {
    var owner = pair.o;
    var parcel = pair.p;
    // do stuff
 }
 // alternate syntax
 foreach(var pair in from p in parcels
                     where p.Owners != null
                     from o in p.Owners
                     orderby o.RecordingDate ?? o.SaleDate ?? o.DateEntered descending
                     select new { o, p }) {
     var owner  = pair.o;
     var parcel = pair.p;
     // do stuff
 }
You'll need to add the parcel to the item returned by SelectMany:
parcels
        .Where(p => !p.Owners.IsNullOrEmpty())
        .SelectMany(p => p.Owners.Select(o => new { Parcel = p, Owner = o }))
        .OrderByDescending(x => x.Owner.RecordingDate ?? x.Owner.SaleDate ?? x.Owner.DateEntered)
        .ForEach(item =>
        {
            Parcel p = item.Parcel;
            Owner o = item.Owner;
            ...
        }
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论