【发布时间】:2020-05-04 16:41:17
【问题描述】:
C# 的新手,这太令人困惑了,我的代码可能不像某些人想要的那样整洁。请耐心等待,我正在学习。
我有一个名为“shoppingList”的“商品”列表。
单击“字母”按钮时,我想按“项目”类中的“名称”重新排列“购物清单”中的项目。重新排列列表后,将在表单上重新绘制列表。
我知道这里可能已经有解决方案,但是在尝试了这么多之后,我只是认为我的知识还不够。如果你还知道的话,请用宝贝和我说话。也很高兴提供更多信息。提前谢谢你
public partial class Form1:Form{
List<Item> shoppingList = new List<Item>() { };
}
public class Item{
public Item(string Name, int Amount)
{
this.name = Name;
this.amount = Amount;
}
public string getname() { return name; }
public int getamount() { return amount; }
public int amount;
public string name;
}
private void alphabetical_Click(object sender, EventArgs e)
{
//What to put here?
ProcessAndDrawShoppingList();
}
【问题讨论】:
-
只需为您想要的每种比较类型(名称、金额等)创建一个实现
IComparer<Item>的类。然后您可以拨打this.shoppingList.Sort(new ItemComparerByName());。请注意,如果仅用于演示目的,您可能希望保留应用排序(asc/desc)、过滤和您的 UI 可能需要的任何其他内容(例如分页)的列表的 视图。 -
我很确定当您输入问题时,Stack 上出现了很多类似的问题。我不敢相信你没有发现任何有用的东西。
-
其实不是按字母顺序。我的代码也与其他人略有不同,因此我不太了解他们在做什么。如果这是其他语言就好了,但我的 C# 业余技能很出色。