列表按字母顺序排序
我在 Framework 3.5 上使用 C#。 我希望快速对通用 List
进行排序。 对于此示例,假设我有一个 Person
类型的列表,其属性为姓氏。 我如何使用 lambda 表达式对此列表进行排序?
List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
I'm using C# on Framework 3.5. I'm looking to quickly sort a Generic List<T>
. For the sake of this example, let's say I have a List of a Person
type with a property of lastname. How would I sort this List using a lambda expression?
List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
如果您的意思是就地排序(即列表已更新):
如果您的意思是新列表:
If you mean an in-place sort (i.e. the list is updated):
If you mean a new list:
您是否需要对列表进行就地排序,或者只是列表内容的有序序列? 后者更容易:
要就地排序,您需要一个
IComparer
或Comparison
。 为此,您可能希望考虑 MiscUtil 中的ProjectionComparer
。(我知道我一直在提起 MiscUtil - 它只是一直相关......)
Do you need the list to be sorted in place, or just an ordered sequence of the contents of the list? The latter is easier:
To sort in place, you'd need an
IComparer<Person>
or aComparison<Person>
. For that, you may wish to considerProjectionComparer
in MiscUtil.(I know I keep bringing MiscUtil up - it just keeps being relevant...)
您可以使用 linq :) 使用:
you can use linq :) using :
对我来说这个有用的虚拟指南 - 在通用列表中排序 - 有效。
它可以帮助您理解 4 种方法(重载)来完成这项工作,并提供非常完整和清晰的解释和简单的示例
for me this useful dummy guide - Sorting in Generic List - worked.
it helps you to understand 4 ways(overloads) to do this job with very complete and clear explanations and simple examples
您可以使用以下代码片段:
其中
New1
是List
。EmpList
是List
的变量。z
是Employee
类型的变量。You can use this code snippet:
where
New1
is aList<Employee>
.EmpList
is variable of aList<Employee>
.z
is a variable ofEmployee
type.您还可以使用
You can also use
这是一个通用的排序器。 用下面的开关调用。
dvm.PagePermissions 是我的 ViewModel 类型的属性
本例中的列表 T 是一个名为 page_permission 的 EF6 模型类。
dvm.UserNameSortDir 是视图模型上的一个字符串属性,用于保存下一个排序方向。 视图中实际使用的那个。
This is a generic sorter. Called with the switch below.
dvm.PagePermissions is a property on my ViewModel of type
List T in this case T is a EF6 model class called page_permission.
dvm.UserNameSortDir is a string property on the viewmodel that holds the next sort direction. The one that is actaully used in the view.
在 .NET 7 预览版中,您可以使用简化的排序System.Linq 的 a>。 它还具有一些性能改进。
另外,请注意,
Sort
方法在大多数情况下具有更好的性能,因为您无需分配新列表。In .NET 7 preview you can use the simplified ordering of
System.Linq
. It also has some performance improvements.Also, be aware that the
Sort
method has a better performance in most cases because you don't allocate a new list.