using System;
using System.Collections.Generic;
using System.Linq;
public class Test
{
public static void Main()
{
List<Item1> myList = Test.getmyList();
List<Item2> externList = Test.getExternList();
Test.print(myList, "Мой список:");
Test.print(externList, "Внешний список до сортировки:");
externList = externList.OrderBy(x => myList.FindIndex(y => x.Name == y.Name)).ToList();
Test.print(externList, "Внешний список после сортировки:");
}
private static List<Item1> getmyList()
{
Item1[] items = new Item1[] {
new Item1 {id = 1, Name = "P1"},
new Item1 {id = 2, Name = "P2"},
new Item1 {id = 3, Name = "P3"},
new Item1 {id = 4, Name = "P4"},
new Item1 {id = 5, Name = "P5"}
};
return items.ToList();
}
private static List<Item2> getExternList()
{
Item2[] items = new Item2[] {
new Item2 { Name = "P5"},
new Item2 { Name = "P4"},
new Item2 { Name = "P3"},
new Item2 { Name = "P2"},
new Item2 { Name = "P1"}
};
return items.ToList();
}
private static void print<T>(IEnumerable<T> list, string message = "")
{
Console.WriteLine(message);
foreach (var item in list)
{
Console.WriteLine(item.ToString());
}
}
}
class Item1
{
public int id { get; set; }
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
class Item2
{
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CgoKcHVibGljIGNsYXNzIFRlc3QKewoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKICAgIHsKCiAgICAgICAgTGlzdDxJdGVtMT4gbXlMaXN0ID0gVGVzdC5nZXRteUxpc3QoKTsKICAgICAgICBMaXN0PEl0ZW0yPiBleHRlcm5MaXN0ID0gVGVzdC5nZXRFeHRlcm5MaXN0KCk7CgogICAgICAgIFRlc3QucHJpbnQobXlMaXN0LCAi0JzQvtC5INGB0L/QuNGB0L7QujoiKTsKICAgICAgICBUZXN0LnByaW50KGV4dGVybkxpc3QsICLQktC90LXRiNC90LjQuSDRgdC/0LjRgdC+0Log0LTQviDRgdC+0YDRgtC40YDQvtCy0LrQuDoiKTsKCiAgICAgICAgZXh0ZXJuTGlzdCA9IGV4dGVybkxpc3QuT3JkZXJCeSh4ID0+IG15TGlzdC5GaW5kSW5kZXgoeSA9PiB4Lk5hbWUgPT0geS5OYW1lKSkuVG9MaXN0KCk7CgogICAgICAgIFRlc3QucHJpbnQoZXh0ZXJuTGlzdCwgItCS0L3QtdGI0L3QuNC5INGB0L/QuNGB0L7QuiDQv9C+0YHQu9C1INGB0L7RgNGC0LjRgNC+0LLQutC4OiIpOwoKICAgIH0KICAgIAoKICAgIHByaXZhdGUgc3RhdGljIExpc3Q8SXRlbTE+IGdldG15TGlzdCgpCiAgICB7CiAgICAgICAgSXRlbTFbXSBpdGVtcyA9IG5ldyBJdGVtMVtdIHsKICAgICAgICAgICAgICAgIG5ldyBJdGVtMSB7aWQgPSAxLCBOYW1lID0gIlAxIn0sCiAgICAgICAgICAgICAgICBuZXcgSXRlbTEge2lkID0gMiwgTmFtZSA9ICJQMiJ9LAogICAgICAgICAgICAgICAgbmV3IEl0ZW0xIHtpZCA9IDMsIE5hbWUgPSAiUDMifSwKICAgICAgICAgICAgICAgIG5ldyBJdGVtMSB7aWQgPSA0LCBOYW1lID0gIlA0In0sCiAgICAgICAgICAgICAgICBuZXcgSXRlbTEge2lkID0gNSwgTmFtZSA9ICJQNSJ9CiAgICAgICAgICAgIH07CiAgICAgICAgcmV0dXJuIGl0ZW1zLlRvTGlzdCgpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIExpc3Q8SXRlbTI+IGdldEV4dGVybkxpc3QoKQogICAgewogICAgICAgIEl0ZW0yW10gaXRlbXMgPSBuZXcgSXRlbTJbXSB7CiAgICAgICAgICAgICAgICBuZXcgSXRlbTIgeyBOYW1lID0gIlA1In0sCiAgICAgICAgICAgICAgICBuZXcgSXRlbTIgeyBOYW1lID0gIlA0In0sCiAgICAgICAgICAgICAgICBuZXcgSXRlbTIgeyBOYW1lID0gIlAzIn0sCiAgICAgICAgICAgICAgICBuZXcgSXRlbTIgeyBOYW1lID0gIlAyIn0sCiAgICAgICAgICAgICAgICBuZXcgSXRlbTIgeyBOYW1lID0gIlAxIn0KICAgICAgICAgICAgfTsKICAgICAgICByZXR1cm4gaXRlbXMuVG9MaXN0KCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBwcmludDxUPihJRW51bWVyYWJsZTxUPiBsaXN0LCBzdHJpbmcgbWVzc2FnZSA9ICIiKQogICAgewogICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKG1lc3NhZ2UpOwogICAgICAgIGZvcmVhY2ggKHZhciBpdGVtIGluIGxpc3QpCiAgICAgICAgewogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShpdGVtLlRvU3RyaW5nKCkpOwogICAgICAgIH0KICAgIH0KCn0KCmNsYXNzIEl0ZW0xCnsKICAgIHB1YmxpYyBpbnQgaWQgeyBnZXQ7IHNldDsgfQogICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0KCiAgICBwdWJsaWMgb3ZlcnJpZGUgc3RyaW5nIFRvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gTmFtZTsKICAgIH0KfQoKY2xhc3MgSXRlbTIKewogICAgcHVibGljIHN0cmluZyBOYW1lIHsgZ2V0OyBzZXQ7IH0KICAgIHB1YmxpYyBvdmVycmlkZSBzdHJpbmcgVG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiBOYW1lOwogICAgfQp9Cg==