这是一个类
Class Emp {
String firstName;
String lastName;
int sal;
-----------
}这里我有一个100名员工的列表,我想根据薪水和名字和姓氏对对象进行排序。使用采集框架我该怎么做呢?这跟字典是怎么工作的有关??
发布于 2013-05-09 02:37:58
.NET提供了几个集合来完成您的任务。
列表
您可以创建一个包含所有实体的列表,并使用Sort方法对它们进行排序。工资排序示例(假设字段为公共字段):
List<Emp> empCollection= new List<Emp>
{
new Emp { sal = 1000, firstName = "Chris", lastName = "Bakker" },
new Emp { sal = 1500, firstName = "Bea", lastName = "Smith" },
// etc.
};
empCollection.Sort((a,b) => a.sal.CompareTo(b.sal));赞成和反对:
SortedDictionary
您也可以使用SortedDictionary。字典是键和值的组合。在您的示例中,值始终是员工。key是您希望对项目进行排序的元素。按名字排序的示例:
SortedDictionary<string, Emp> empCollection= new SortedDictionary<string, Emp>
{
{"Chris", new Emp { sal = 1000, firstName = "Chris", lastName = "Bakker" }},
{"Bea", new Emp { sal = 1500, firstName = "Bea", lastName = "Smith" }},
// etc.
};赞成和反对:
LINQ
您可以使用LINQ创建新创建的排序列表:
List<Emp> empCollection= new List<Emp>
{
new Emp { sal = 1000, firstName = "Chris", lastName = "Bakker" },
new Emp { sal = 1500, firstName = "Bea", lastName = "Smith" },
// etc.
};
List<Emp> sortedEmpCollection = empCollection.OrderBy(e => e.lastName).ToList();赞成和反对:
发布于 2013-05-09 01:13:17
芭乐是你的赌注。它有助于缓解这种单调重复的任务。
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Ordering.html
http://pratimsc.wordpress.com/2011/08/16/sorting-the-easy-way/
发布于 2013-05-09 01:19:05
我前段时间碰巧在博客上写了这个,here
这真的取决于你需要什么,但我发现字典在类型安全方面是最好的,而且比普通的HashTable更快。然而,对于Collections来说,还有各种各样的其他选择。有列表和数组列表(几乎没有人再使用它们)。MSDN的每种类型都有过多的示例,但为了获得性能,最好搜索一下,然后自己做决定,因为这不仅仅是关于性能的。还有可扩展性,以及您是否要使用复杂类型或原始类型。在这个场景中,您似乎使用了复杂类型,但这可能不是您的总体目标。
此外,如果您需要更改通知或延迟加载之类的东西,您将需要考虑IObservable集合和IQueryable之类的东西,它是IEnumerable的一个扩展。
我只是注意到你最关心的是排序。在C#中,最好的选择是使用IQueryable,如果您熟悉它的话还可以使用LINQ。它速度很快,开销很小,可以对你拥有的任何东西进行排序。
使用您的类,这里只是您可以使用LINQ所做的提示
List<Emp> guy = new List<Emp>();
guy.Where(x => x.firstName == "George").OrderBy(x => x.lastName);希望这能有所帮助
https://stackoverflow.com/questions/16446434
复制相似问题