【发布时间】:2020-03-29 17:02:04
【问题描述】:
我想按邮政地址排序,但我无法看到一些 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*/
但我似乎不明白如何使用它。
MyCustomList.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
【问题讨论】:
-
你用小写的's'调用了排序 - 所以这不会编译。假设这是问题中的错误。您为什么不尝试示例中所说的 list.Sort((a,b) => a.PostalAddress.CompareTo(b.PostalAddress)) ?
-
它给出了一个错误,指出无法将lamba表达式转换为类型'|Comparer',因为它不是委托类型
-
您尝试使用的方法是静态的,您需要调用 Array.Sort(list,(a,b) => a.PostalAddress.CompareTo(b.PostalAddress))
-
已验证的解决方案请查看stackoverflow.com/a/57371579/6923146