Dictionary<int,string> 保存 Dictionary<int, string> dic = new Dictionary<int, string>(); var p= from pair in dic orderby pair.Key select pair; dic.OrderBy(c => c.Value);
public static void Test() { //2 4 5 1 3 //Smith Jihn Mary Cherr Tomn Student[] data = { new Student("Smith ", 2), new Student("Jihn ", 4), new Student("Mary", 5), new Student("Cherr", 1), new Student("Tomn", 3) }; Array.Sort(data, (a, b) => a.ID - b.ID);//根据id排序 Console.WriteLine("根据id排序"); foreach (Student s in data) Console.WriteLine(s.Name + "-" + s.ID.ToString()); Array.Sort(data, (a, b) => string.Compare(a.Name, b.Name, true));//根据名字排序 Console.WriteLine("根据名字排序"); foreach (Student s in data) Console.WriteLine(s.Name + "-" + s.ID.ToString()); }public class Student { public string Name; public int ID; public Student(string name, int id) { Name = name; ID = id; } } 输出 根据id排序 Cherr-1 Smith -2 Tomn-3 Jihn -4 Mary-5 根据名字排序 Cherr-1 Jihn -4 Mary-5 Smith -2 Tomn-3
string[] name = new string[5] { "Smith", "Jihn", "Mary", "Cherr", "Tomn" }; int[] id = new int[5] { 2, 4, 5, 1, 3 }; Dictionary<string, int> stu = new Dictionary<string, int>(); for (int i = 0; i < 5; i++) { stu.Add(name[i], id[i]); } var sortById = stu.OrderBy(c => c.Value); foreach (var temp in sortById) { Console.WriteLine(temp.Value+":"+temp.Key); } Console.WriteLine("------我是分隔线---------"); var sortByName = stu.OrderBy(c => c.Key); foreach (var temp in sortByName) { Console.WriteLine(temp.Value+":"+temp.Key); }
然后写一个简单的排序方法 比如说冒泡
当然是泛型方法 比大小的时候使用object.equls
最后再重载equles就行了
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace test
{
class Program
{
static void Main(string[] args)
{
int[] intid = { 2, 4, 5, 1, 3 };
string[] strname = { "Smith", "Jihn", "Mary", "Cherr", "Tomn"};
SortId(ref intid, ref strname);
Console.WriteLine("id array:");
ShowArray(intid);
Console.WriteLine("name array:");
ShowArray(strname);
SortName(ref intid, ref strname);
Console.WriteLine("id array:");
ShowArray(intid);
Console.WriteLine("name array:");
ShowArray(strname);
Console.ReadKey();
}
public static void SortId(ref int[] idArr, ref string[] NameArr)
{
//简单的冒泡
int temp;
string tmpStr;
for (int outer = idArr.Length-1; outer >= 1; outer--)
{
for (int inner = 0; inner <= outer - 1; inner++)
{
if ((int)idArr[inner] > idArr[inner + 1])
{
temp = idArr[inner];
idArr[inner] = idArr[inner + 1];
idArr[inner + 1] = temp; //在执行id排序时调换顺序需要对name也调换顺序
tmpStr = NameArr[inner];
NameArr[inner] = NameArr[inner + 1];
NameArr[inner + 1] = tmpStr;
}
}
} }
public static void SortName(ref int[] idArr, ref string[] NameArr)
{
//简单的冒泡
int temp;
string tmpStr;
for (int outer = NameArr.Length-1; outer >= 1; outer--)
{
for (int inner = 0; inner <= outer - 1; inner++)
{
if (NameArr[inner].CompareTo(NameArr[inner + 1])> 0)
{
tmpStr = NameArr[inner];
NameArr[inner] = NameArr[inner + 1];
NameArr[inner + 1] = tmpStr; //在执行name排序时调换顺序需要对id也调换顺序
temp = idArr[inner];
idArr[inner] = idArr[inner + 1];
idArr[inner + 1] = temp;
}
}
} } public static void ShowArray(Array arr)
{
for (int i = 0; i < arr.Length;i++ )
{
Console.WriteLine(arr.GetValue(i));
}
}
}
}
自己看去 我打了几次回答把我累得。。
Dictionary<int, string> dic = new Dictionary<int, string>();
var p= from pair in dic
orderby pair.Key
select pair;
dic.OrderBy(c => c.Value);
{
//2 4 5 1 3
//Smith Jihn Mary Cherr Tomn Student[] data =
{
new Student("Smith ", 2),
new Student("Jihn ", 4),
new Student("Mary", 5),
new Student("Cherr", 1),
new Student("Tomn", 3)
};
Array.Sort(data, (a, b) => a.ID - b.ID);//根据id排序
Console.WriteLine("根据id排序");
foreach (Student s in data) Console.WriteLine(s.Name + "-" + s.ID.ToString());
Array.Sort(data, (a, b) => string.Compare(a.Name, b.Name, true));//根据名字排序
Console.WriteLine("根据名字排序");
foreach (Student s in data) Console.WriteLine(s.Name + "-" + s.ID.ToString());
}public class Student
{
public string Name;
public int ID;
public Student(string name, int id) { Name = name; ID = id; }
}
输出
根据id排序
Cherr-1
Smith -2
Tomn-3
Jihn -4
Mary-5
根据名字排序
Cherr-1
Jihn -4
Mary-5
Smith -2
Tomn-3
int[] id = new int[5] { 2, 4, 5, 1, 3 }; Dictionary<string, int> stu = new Dictionary<string, int>();
for (int i = 0; i < 5; i++)
{
stu.Add(name[i], id[i]);
} var sortById = stu.OrderBy(c => c.Value);
foreach (var temp in sortById)
{
Console.WriteLine(temp.Value+":"+temp.Key);
}
Console.WriteLine("------我是分隔线---------");
var sortByName = stu.OrderBy(c => c.Key);
foreach (var temp in sortByName)
{
Console.WriteLine(temp.Value+":"+temp.Key);
}