2016-07-31 52 views
2

我对这个网站很陌生,并且参加了一门编程基础课程。如何使用存储在列表中的对象(用于排序目的)C#

我正在做最后的任务,需要一点帮助。

在这里我们去:

我们要创建一个简单的游戏,有玩家创建,加载播放器,整理的球员的统计信息的功能。

我用的这部分代码,让用户输入他/她的名字,然后将其存储在一个列表:

List<Player> playerList = new List<Player>(); 
Player p = new Player(); 

//在那里我存储的名称 //胜和损失清单还设置为零

Console.Write("Enter your Name: ");

nameInput = Console.ReadLine();

p.Name = nameInput;

playerList.Add(new Player(p.Name, p.Wins, p.Losses)); //用于添加到列表中

//使用此方法胜排序:

static void SortByWins(int playerList) 
    { 
     int[] arr = { 831, 12, 63, 741, 334, 851, 131, 3 }; 

     int temp = 0; 

     for (int write = 0; write < arr.Length; write++) 
     { 
      for (int sort = 0; sort < arr.Length - 1; sort++) 
      { 
       if (arr[sort] > arr[sort + 1]) 
       { 
        temp = arr[sort + 1]; 
        arr[sort + 1] = arr[sort]; 
        arr[sort] = temp; 
       } 
      } 
     } 

     for (int i = 0; i < arr.Length; i++) 
      Console.Write(arr[i] + "\n"); 

     Console.ReadKey(); 
    } 

我用一些随机值的数组来检查排序代码作品,但我需要这样排序的球员的胜利,我不知道如何得到这个名单进入该方法,所以它可以分类的胜利(也需要按损失和名称排序) 注:我不是允许为此作业使用sort.Class。

任何帮助将不胜感激。

回答

0

你不需要使用这一切。你可以在你的文件的顶部添加using System.Linq,然后用这个方法:

playerList = playerList.OrderBy(x=> x.Wins).ToList(); 

或者:当你有写通用代码(在你的情况Sort

playerList.Sort((x,y) => x.Wins - y.Wins); 
+0

感谢您的快速响应。 –

+1

@MarkHermens请只写一条评论。不要为了一个目的而使用多个评论。 – user3185569

+0

我的老师会检查这个游戏,如果他下载文件,这是否意味着他必须使用system.linq将其写入代码 –

0

,尽可能地做到一般,你可以:

... 
using System.Reflection; 
... 

public static void BubbleSort<T>(IList<T> list, IComparer<T> comparer = null) { 
    if (null == list) 
    throw new ArgumentNullException("list"); 

    // Can we use default comparer? 
    if (null == comparer) 
    if (typeof(IComparable).IsAssignableFrom(typeof(T)) || 
     typeof(IComparable<T>).IsAssignableFrom(typeof(T))) 
     comparer = Comparer<T>.Default; 

    if (null == comparer) 
    throw new ArgumentNullException("comparer", string.Format(
     "There's no default comparer for {0} class, you should provide it explicitly.", 
     typeof(T).Name)); 

    for (bool sorted = false; !sorted;) { 
    sorted = true; 

    for (int i = 0; i < list.Count - 1; ++i) 
     if (comparer.Compare(list[i], list[i + 1]) > 0) { 
     sorted = false; 

     T h = list[i]; 
     list[i] = list[i + 1]; 
     list[i + 1] = h; 
     } 
    } 
} 

等都可以轻松分类playerList

List<Player> playerList = ... 

BubbleSort(playerList, Comparer<Player>.Create((x, y) => x.Wins.CompareTo(y.Wins))); 
+0

感谢您的答案,这意味着我必须添加“使用System.Reflection;”我不确定老师是否会接受。 –

+0

@Mark Hermens:好的,你可以省略*默认比较器*部分,从而使得例程不那么普遍 –

相关问题