2017-07-02 92 views
0

设置场景,我有一个对象列表。 每个对象都包含一个名称和一个由x坐标和y坐标组成的点。C#按名称和坐标排列对象列表

我目前有列表按照字母顺序排列对象的名称。现在我想要通过降序或升序x坐标来排序相同的命名对象。

  • 什么是现在列表内:

    • BP301(5,6)
    • BP301(-3,2)
    • BP301(0,4)
    • BP301( 5,6)
    • BP302(10,7)
    • BP302(10,7)
    • GP001(8,3)
  • 我希望列表内什么:

    • BP301(-3,2)
    • BP301(0,4)
    • BP301(5, 6)
    • BP301(5,6)
    • BP302(10,7)
    • BP302(10,7)
    • GP001(8,3)

希望我的问题是不够清楚

+1

你能告诉你现在使用存储和整理这些对象的代码? – Steve

回答

2

你有没有使用LINQ考虑?

粗糙例子给出任何代码,所以我假设的IEnumerable<T>兼容列表:

var sortedList = list.OrderBy(i => i.Name).ThenBy(i => i.X).ThenBy(i => i.Y); 
+0

是的,工作,谢谢。我需要更多地关注LINQ。我对列表排序很不好。 – user3128153

+0

你可以做很多有趣的事情,按升序排序,按降序排序,组合等等。 – Lloyd