c# - 使用特定字段对自定义数组列表进行排序
问题描述
我想按邮政地址排序,但我无法看到一些 Linq 函数尝试过它们,但我似乎无法获得所需的所有必需参数。例如我看到了这个例子
list.Sort((p, q) => p.Category.CompareTo(q.Category)); /*has and error that says cannot convert lamba expressions to type '|Comparer' because it is not a delegate*/
但我似乎不明白如何使用它。
我的自定义列表.cs
class MyCustomList
{
private string name;
private string postalAddress;
public MyCustomList(string name, string postalAddress)
{
this.name = name;
this.postalAddress = postalAddress;
}
//getters and setters
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
public string PostalAddress
{
get
{
return postalAddress;
}
set
{
postalAddress = value;
}
}
}
Form1.cs
ArrayList list = new ArrayList();
list.Add(new MyCustomList("A somename","A Fake Postal Address");
list.Add(new MyCustomList("B somename","B Fake Postal Address");
list.Sort(); // Sort by Postal adress
解决方案
你真的需要使用ArrayList
吗?
这是 .NET 前泛型时代的遗物,您应该尽可能地使用 .NET 的IEnumerable<T>
实现List<T>
。
LINQ 在 上运行IEnumerable<T>
,因此不适用于您的ArrayList
,而您正在寻找的方法是OrderBy
or OrderByDescending
。
例子:
var list = new List<MyCustomList>();
list.Add(new MyCustomList("A somename","A Fake Postal Address"));
list.Add(new MyCustomList("B somename","B Fake Postal Address"));
list.OrderBy(cl => cl.Postcode); // Sort by Postal address
推荐阅读
- sql - 围绕列表中的值的案例陈述
- elasticsearch - 在 NiFi 中使用“ScrollElasticSearchHttp”处理器时出错
- node.js - Houd CI 解析错误:“import”和“export”可能只出现在“sourceType:module”中
- windows - “svn ls....”命令是否存在 Windows 等效项?
- reactjs - 复制粘贴 React.js 应用程序时我需要更改什么?
- mysql - 使用节点JS将带有数组的json对象插入到mysql表中
- html - 如何在已对齐页面中心的图像下放置文本?
- video - 如何比较 MPEG-7 视频签名签名
- javascript - React js - 表达:res.send Vs res.render 错误
- c# - .NET Core 3.1 基于角色的授权失败,出现 403 异常