Click here to Skip to main content
       

C#

 
GeneralRe: Automatically Compiler Generated Unique Constants ? PinmemberEddy Vluggen21-Nov-12 21:08 
GeneralRe: Automatically Compiler Generated Unique Constants ? PinmvpRichard MacCutchan21-Nov-12 22:01 
GeneralRe: Automatically Compiler Generated Unique Constants ? PinmemberC-P-User-322-Nov-12 14:22 
GeneralRe: Automatically Compiler Generated Unique Constants ? PinmvpRichard MacCutchan22-Nov-12 23:24 
GeneralRe: Automatically Compiler Generated Unique Constants ? PinmemberBobJanova22-Nov-12 23:29 
GeneralRe: Automatically Compiler Generated Unique Constants ? PinmemberC-P-User-323-Nov-12 4:43 
QuestionDataGridView doesn't appear on screen [modified] PinmemberRickSharp21-Nov-12 12:44 
AnswerRe: DataGridView doesn't appear on screen PinmemberEddy Vluggen21-Nov-12 13:17 
GeneralRe: DataGridView doesn't appear on screen PinmemberRickSharp21-Nov-12 13:27 
GeneralRe: DataGridView doesn't appear on screen PinmemberEddy Vluggen21-Nov-12 13:42 
QuestionTextbox help! PinmemberKurac121-Nov-12 11:18 
AnswerRe: Textbox help! PinmemberMycroft Holmes21-Nov-12 12:01 
QuestionSpecialized List Sorting question PinmemberNuclearMan8521-Nov-12 7:12 
AnswerRe: Specialized List Sorting question [modified] PinmemberRichard Deeming21-Nov-12 8:03 
Option 1:
It's not clean, but if you want to sort the lists, this should work:
static void Sort<T>(IList<T> sortKey, params IList<T>[] otherLists)
{
   // TODO: Validate the arguments:
   // - None of the lists are null;
   // - All of the lists have the same length;

   Action<IList<T>, IDictionary<int, int>> sortList = (list, keys) =>
   {
      var values = list
         .Select((value, i) => new { key = keys[i], value })
         .OrderBy(p => p.key).Select(p => p.value);
 
      int index = 0;
      foreach (T value in values)
      {
         list[index++] = value;
      }
   };
 
   // Key is the index in the input list;
   // Value is the index in the output list.
   var indices = Enumerable.Range(0, sortKey.Count)
      .OrderBy(i => sortKey[i])
      .Select((key, value) => new { key, value })
      .ToDictionary(p => p.key, p => p.value);
 
   sortList(sortKey, indices);
   foreach (var list in otherLists)
   {
      sortList(list, indices);
   }
}
 
Edit:
Missed a ToList call in the anonymous delegate which would prevent this from working. Option 2 is probably a better approach. Smile | :)
 
Edit 2:
Nope, the ToList call isn't needed - the OrderBy call ensures that the entire sequence is evaluated on the first call to MoveNext. D'Oh! | :doh:
It still ends up creating a copy of the list, so option 2 is still better.



"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer



modified 22-Nov-12 7:15am.

AnswerRe: Specialized List Sorting question PinmemberSledgeHammer0121-Nov-12 8:06 
AnswerRe: Specialized List Sorting question PinmemberRichard Deeming21-Nov-12 8:32 
AnswerRe: Specialized List Sorting question [modified] PinmemberPIEBALDconsult21-Nov-12 8:57 
AnswerRe: Specialized List Sorting question PinmemberBobJanova21-Nov-12 22:50 
QuestionWinForms Class Design PinmemberMember 961929521-Nov-12 6:43 
AnswerRe: WinForms Class Design PinmvpRichard MacCutchan21-Nov-12 7:15 
GeneralRe: WinForms Class Design PinmemberMatt U.21-Nov-12 8:16 
GeneralRe: WinForms Class Design PinmvpRichard MacCutchan21-Nov-12 8:56 
GeneralRe: WinForms Class Design PinmemberMatt U.21-Nov-12 8:59 
GeneralRe: WinForms Class Design PinmvpRichard MacCutchan21-Nov-12 9:06 
GeneralRe: WinForms Class Design PinmemberMatt U.21-Nov-12 9:21 
GeneralRe: WinForms Class Design PinmemberPIEBALDconsult21-Nov-12 10:27 
AnswerRe: WinForms Class Design PinmemberPIEBALDconsult21-Nov-12 9:07 
QuestionUplaod Article To Codeproject PingroupkatlegoEmmnanuelNkosi21-Nov-12 3:44 
AnswerRe: Uplaod Article To Codeproject PinmemberPIEBALDconsult21-Nov-12 3:48 
AnswerRe: Uplaod Article To Codeproject PinmvpRichard MacCutchan21-Nov-12 4:34 
QuestionPrint Crystal Report in c# Using Access Database? Pinmemberkashifjaat21-Nov-12 2:09 
QuestionGenerate Morse Code Sound Pinmemberlong dao21-Nov-12 1:24 
AnswerRe: Generate Morse Code Sound PinprotectorPete O'Hanlon21-Nov-12 1:45 
GeneralRe: Generate Morse Code Sound Pinmemberlong dao21-Nov-12 1:54 
GeneralRe: Generate Morse Code Sound PinprotectorPete O'Hanlon21-Nov-12 2:05 
QuestionKeeps returning NullReferenceException [modified] PinmemberMacUseless20-Nov-12 23:08 
SuggestionRe: Keeps returning NullReferenceException PinmemberV.21-Nov-12 3:25 
GeneralRe: Keeps returning NullReferenceException PinmemberMacUseless21-Nov-12 3:28 
GeneralRe: Keeps returning NullReferenceException PinmemberV.21-Nov-12 3:31 
QuestionValidate XML file against rule in db Pinmemberrahul.net1120-Nov-12 22:29 
AnswerRe: Validate XML file against rule in db PinmemberPIEBALDconsult21-Nov-12 7:07 
GeneralRe: Validate XML file against rule in db Pinmemberrahul.net1116-Jan-13 20:01 
QuestionHow to set the distance between checkbox and text in using TreeView ? Pinmembertaibc20-Nov-12 22:26 
AnswerRe: How to set the distance between checkbox and text in using TreeView ? PingroupJay Nardev21-Nov-12 0:03 
GeneralRe: How to set the distance between checkbox and text in using TreeView ? Pinmembertaibc21-Nov-12 14:06 
QuestionHow to fix Error when i using BackgroundWorker in C# Pinmembersonthuy_st20-Nov-12 20:36 
AnswerRe: How to fix Error when i using BackgroundWorker in C# Pinmember@AmitGajjar20-Nov-12 21:04 
GeneralRe: How to fix Error when i using BackgroundWorker in C# Pinmembersonthuy_st20-Nov-12 21:19 
GeneralRe: How to fix Error when i using BackgroundWorker in C# Pinmember@AmitGajjar20-Nov-12 21:22 
AnswerRe: How to fix Error when i using BackgroundWorker in C# Pinmembersirama200420-Nov-12 22:52 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web04 | 2.8.140905.1 | Last Updated 15 Sep 2014
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid