List<T> OrderBy Alphabetical Order
我在框架3.5上使用C。我想快速分类一个通用的
1 2 | List<Person> people = PopulateList(); people.OrderBy(???? => ?????) |
如果您的意思是就地排序(即列表已更新):
1 | people.Sort((x, y) => string.Compare(x.LastName, y.LastName)); |
如果您是指新列表:
1 | var newList = people.OrderBy(x=>x.LastName).ToList(); // ToList optional |
。
您需要对列表进行适当的排序,还是只需要按顺序排列列表内容的序列?后者更容易:
1 | var peopleInOrder = people.OrderBy(person => person.LastName); |
号
要进行适当的排序,您需要一个
(我知道我一直在提起MiscUtil-它只是保持相关性…)
您可以使用linq:)使用:
1 2 | System.linq; var newList = people.OrderBy(x=>x.Name).ToList(); |
。
1 | people.OrderBy(person => person.lastname).ToList(); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | private void SortGridGenerico< T >( ref List< T > lista , SortDirection sort , string propriedadeAOrdenar) { if (!string.IsNullOrEmpty(propriedadeAOrdenar) && lista != null && lista.Count > 0) { Type t = lista[0].GetType(); if (sort == SortDirection.Ascending) { lista = lista.OrderBy( a => t.InvokeMember( propriedadeAOrdenar , System.Reflection.BindingFlags.GetProperty , null , a , null ) ).ToList(); } else { lista = lista.OrderByDescending( a => t.InvokeMember( propriedadeAOrdenar , System.Reflection.BindingFlags.GetProperty , null , a , null ) ).ToList(); } } } |
您也可以使用
1 | model.People = model.People.OrderBy(x => x.Name).ToList(); |
。
您可以使用以下代码段:
1 | var New1 = EmpList.OrderBy(z => z.Age).ToList(); |
。
其中
对我来说,这个有用的虚拟指南——在通用列表中排序——是有效的。它有助于您理解完成此工作的4种方法(重载),并提供非常完整、清晰的解释和简单的示例
- 列表。排序()
- list.sort(一般比较)
- list.sort(通用IComparer)
- list.sort(Int32、Int32、Generic IComparer)
这是一个通用的分拣机。用下面的开关调用。
dvm.pagePermissions是类型为的ViewModel的属性在这种情况下,t是一个名为page_permission的EF6模型类。
dvm.usernamesortdir是ViewModel上的一个字符串属性,用于保持下一个排序方向。在视图中实际使用的那个。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | switch (sortColumn) { case"user_name": dvm.PagePermissions = Sort(dvm.PagePermissions, p => p.user_name, ref sortDir); dvm.UserNameSortDir = sortDir; break; case"role_name": dvm.PagePermissions = Sort(dvm.PagePermissions, p => p.role_name, ref sortDir); dvm.RoleNameSortDir = sortDir; break; case"page_name": dvm.PagePermissions = Sort(dvm.PagePermissions, p => p.page_name, ref sortDir); dvm.PageNameSortDir = sortDir; break; } public List<T> Sort<T,TKey>(List<T> list, Func<T, TKey> sorter, ref string direction) { if (direction =="asc") { list = list.OrderBy(sorter).ToList(); direction ="desc"; } else { list = list.OrderByDescending(sorter).ToList(); direction ="asc"; } return list; } |