1.先按花色排序,再按数字排序
public class Poker
{public int Number { get; set; }
public int Suit { get; set; }
public string PokerString { get; set; }
public int TransferSuit(char a)
{
int number = 0; ;
switch (a)
{
case '♠':
number = 4;
break;
case '♣':
number = 3;
break;
case '♥':
number = 2;
break;
case '♦':
number = 1;
break;
}
return number;
}
public int TransferNumer(string a)
{
int number;
switch (a)
{
case "J":
number = 11;
break;
case "Q":
number = 12;
break;
case "K":
number = 13;
break;
case "A":
number = 14;
break;
default:
number = Convert.ToInt32(a);
break;
}
return number;
}
}
class Program2
{
static void Main()
{
List<Poker> list = new List<Poker>();
using (StreamReader sr = new StreamReader("Poker.txt", Encoding.UTF8))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.Trim().Length > 0)
{
char suit = (line.Trim())[0];
string num = (line.Trim()).Substring(1);
Poker p = new Poker() { PokerString = line.Trim() };
p.Number = p.TransferNumer(num);
p.Suit = p.TransferSuit(suit);
list.Add(p);
}
}
}
var result = from p in list
orderby p.Suit descending, p.Number descending
select p;
using (StreamWriter sw = new StreamWriter("Poker3.txt", false, Encoding.UTF8))
{
foreach (var item in result)
{
sw.WriteLine(item.PokerString);
}
}
2.像斗地主一样,一样的牌排在前面,之后按序号排序
public class PockerHelper
{
public static string[] numberArray = { "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A" };
public static char[] suitArray = { '♠', '♣', '♥', '♦' };
}
public class Pocker
{
public int Numerber { get; set; }
private List<char> suits = new List<char>();
public List<char> Suits
{
get { return suits; }
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
foreach (char c in PockerHelper.suitArray)
{
if (this.Suits.Contains(c))
{
sb.AppendLine(string.Format("{0}{1}", c, PockerHelper.numberArray[this.Numerber - 2])); // 这个地方的2只是为了调试时,方便阅读
}
}
return sb.ToString();
}
}
public class PockerList
{
private List<Pocker> listPocker = new List<Pocker>();
public List<Pocker> ListPocker
{
get { return listPocker; }
}
public void Add(string pocker)
{
string temp = pocker.Substring(1);
int num = PockerHelper.numberArray.ToList().IndexOf(temp) + 2;
if (listPocker.Any(p=>p.Numerber == num))
{
Pocker rp = this.listPocker.Find(p => p.Numerber == num);
rp.Suits.Add(pocker[0]);
}
else
{
Pocker p = new Pocker(){Numerber = num};
p.Suits.Add(pocker[0]);
listPocker.Add(p);
}
}
}
public class Program
{
static void Main()
{
SortPocker();
}
static void SortPocker()
{
PockerList list = new PockerList();
using (StreamReader sr = new StreamReader("Poker.txt", Encoding.UTF8))
{
string line;
while ( (line =sr.ReadLine()) != null)
{
if (line.Trim().Length >0)
{
list.Add(line.Trim());
}
}
sr.Close();
}
var result = from p in list.ListPocker
orderby p.Suits.Count descending, p.Numerber descending
select p;
using (StreamWriter file = new StreamWriter("Poker1.txt", false, Encoding.UTF8))
{
foreach (var item in result)
{
file.Write(item.ToString());
}
file.Close();
}
}
}