这是我的对象数组
Game[] gameConsoles = new Games[5];
// paramaters are name of the console and game ID
gameConsoles[0] = new Games("Playstation 4", 101);
gameConsoles[1] = new Games("Xbox 1", 108);
gameConsoles[2] = new Games("PS Vita", 110);
gameConsoles[3] = new Games("Wii U", 104);
gameConsoles[4] = new Games("3DS", 102);
for (int i = 0; i < gameConsoles.Length; i++)
{
gameConsoles[i].display();
}
它基本上会显示每个消息框中的所有5个对象,但是我如何制作它以便它可以根据升序中的游戏ID顺序显示它们?
我在排序常规数字时使用的排序算法。
public void ascendingOrder()
{
// helper class
double temp = 0;
for (int j = 0; j < numbers.Length; j++)
{
for (int i = 0; i < numbers.Length - 1; i++)
{
if (numbers[i] > numbers[i + 1])
{
temp = numbers[i];
numbers[i] = numbers[i + 1];
numbers[i + 1] = temp;
}
}
}
}
答案 0 :(得分:5)
您可以使用LINQ OrderBy。
foreach(var item in gameConsole.OrderBy(r=> r.GameID))
{
item.display();
}
答案 1 :(得分:4)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
SortedDictionary<int, Game> gameConsoles = new SortedDictionary<int, Game>();
gameConsoles.Add(101, new Game("Playstation 4", 101));
gameConsoles.Add(108, new Game("Xbox 1", 108));
gameConsoles.Add(110, new Game("PS Vita", 110));
gameConsoles.Add(104, new Game("Wii U", 104));
gameConsoles.Add(102, new Game("3DS", 102));
foreach (KeyValuePair<int, Game> item in gameConsoles)
{
Console.WriteLine(item.Value.ToString());
}
Console.ReadKey();
}
}
public class Game
{
public Game(string name, int id)
{
Id = id;
Name = name;
}
public int Id { get; set; }
public string Name { get; set; }
public override string ToString()
{
return string.Format("Id: {0} Name: {1}", Id, Name);
}
}
}
答案 2 :(得分:3)
在.NET中订购商品有三种常用方法:
Games
课程中实施IComparable<Games>
,或Sort
方法提供IComparer<Games>
的实例。以下是您实施IComparable<Games>
的方法:
class Games : IComparable<Games> {
public int CompareTo(Games other) {
return GameId.CompareTo(other.GameId);
}
}
现在,您的Games
会根据GameId
进行排序。
以下是您使用外部IComparer<Games>
的方式:
class CompareGamesOnId : IComparer<Games> {
int Compare(Games a, Games b) {
return a.GameId.CompareTo(b.GameId);
}
}
你这样打电话给Sort
:
Array.Sort(games, new CompareGamesOnId());
答案 3 :(得分:2)
你可以使用1个衬垫。 LINQ适用于不影响集合的操作。
gameConsoles.OrderBy(gc => gc.GameID).ToList().ForEach(g => g.display());
答案 4 :(得分:0)
在游戏上实施IComparable
并使用.Sort方法?IComparable
答案 5 :(得分:0)
您可以在不使用可怕的=>
符号的情况下尝试LINQ,但当然,出于简单目的,不建议使用它。但是,这解释了=>
到底在做什么,
foreach (var item in gameConsole.OrderBy(delegate(Game g) { return g.GameId; }))
{
item.display();
}