c# - How to join nth list -
first of patience read such long question. shortest version, can produce far.
this question sub question of my previous question. once clarify it, update , ask reopen can answer it
my question is there practical way of nth combination of below code.
i have itinerary composed connected flights count 1,2 .. n
 each flight may have classes such  a, b, c ...
i combining each flight same class
here code produces combinations:
//combination of 1 flightsegments var firstflightsegments = flightsegments.where(s => s.count == 1).tolist();  var origindestination =      (from firstflightsegment in firstflightsegments     select         new origindestination {             pnr = utils.generatepnr(),             flightsegments = new list<flightsegment>{firstflightsegment}         }     )   //combinations of 2 flightsegments var firstflightsegments = flightsegments.where(s => s.count == 1).tolist(); var secondsecondsegments = flightsegments.where(s => s.count == 2).tolist();  var origindestination =      (from firstflightsegment in firstflightsegments         join secondflightsegment in secondsecondsegments             on firstflightsegments.flightclass equals secondsegment.flightclass     select         new origindestination {             pnr = utils.generatepnr(),             flightsegments = new list<flightsegment>{firstflightsegment, secondflightsegment}         }     )   //combinations of 3 flightsegments var firstflightsegments = flightsegments.where(s => s.count == 1).tolist(); var secondsecondsegments = flightsegments.where(s => s.count == 2).tolist(); var thirdflightsegments = flightsegments.where(s => s.count == 3).tolist();  var origindestination =      (from firstflightsegment in firstflightsegments         join secondflightsegment in secondsecondsegments             on firstflightsegments.flightclass equals secondsegment.flightclass                 join thirdflightsegment in thirdflightsegments                      on secondsegment.flightclass equals thirdflightsegment.flightclass             select         new origindestination {             pnr = utils.generatepnr(),             flightsegments = new list<flightsegment>{firstflightsegment, secondflightsegment, thirdflightsegment}         }   //how combinations of n flightsegments  ???   edit after @rhumborl answer works fine according upper side, need add code reflect need , additional field myindex group on it
  var origindestination =            (from firstflightsegment in firstflightsegments             join secondflightsegment in secondsecondsegments                 on firstflightsegments.flightclass equals secondsegment.flightclass         select             new origindestination {                 pnr = utils.generatepnr(),                 myindex = firstflightsegment.fligthnumber + secondflightsegment.fligthnumber                 flightsegments = new list<flightsegment>{firstflightsegment, secondflightsegment}             }         )      
it looks want flight segments flight class , return them list in order of count?
a simple groupby it:
var flights = fightsegments     .groupby(fs => fs.flightclass)  // steps each flight     .select(fc =>         new origindestination {             //flightclass = fc.key, // if need             pnr = utils.generatepnr(),             flightsegments = fc         // fc list of steps                 .orderby(s => s.count)  // make sure in order                 .tolist()         }     )   if want flights @ least n steps, need little more work add clause in:
var flights = fightsegments     .groupby(fs => fs.flightclass)     .where(fcg => fcg.count() >= n) // make sure flight has n+ steps     .select(fc =>         new origindestination {             //flightclass = fc.key, // if need             pnr = utils.generatepnr(),             flightsegments = fc                 .orderby(s => s.count)                 .tolist()         }     )      
Comments
Post a Comment