110,533
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Linq;
namespace Test
{
class Program
{
static void Main(string[] args)
{
string[] data = new[]
{
"Name-1", "Age-1", "Address-1", "Phone-1",
"Age-2", "Name-3", "Address-2", "Phone-2",
"Name-2", "Age-3", "Address-3", "Phone-3"
};
string[] sort = new[] { "Age", "Phone", "Address", "Name" };
//查询表达式
var query1 = (from value in data
let split = value.Split('-')
orderby split[1], Array.IndexOf(sort, split[0])
select value)
.ToArray();
//点标记
var query2 = data
.Select(x => new { x, y = x.Split('-') })
.OrderBy(x => x.y[1])
.ThenBy(z => Array.IndexOf(sort, z.y[0]))
.Select(value => value.x)
.ToArray();
foreach (var item in query1)
{
Console.WriteLine(item);
}
foreach (var item in query2)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
}
}
string firstSort = sorts[0];
var suffixList = new List<string>();
foreach (var item in data)
{
var tmp = item.Split('-');
if (tmp[0] == firstSort)
{
suffixList.Add(tmp[1]);
}
}
var list = new List<string>();
foreach (var suffix in suffixList)
{
foreach (var item in sorts)
{
list.Add(item + "-" + suffix);
}
}
foreach (var x in list)
{
Console.WriteLine(x);
}
static void Main(string[] args)
{
string[] data =
{
"Name-1", "Age-1", "Address-1", "Phone-1",
"Age-2", "Name-3", "Address-2", "Phone-2",
"Name-2", "Age-3", "Address-3", "Phone-3"
};
string[] sort = { "Age", "Phone", "Address", "Name" };
Array.Sort(data, (a, b) =>
{
var k = string.Compare(a.Split('-')[1], b.Split('-')[1]);
if (k == 0)
{
return Array.FindIndex(sort, x => x == a.Split('-')[0]) - Array.FindIndex(sort, x => x == b.Split('-')[0]);
}
return k;
});
foreach (var x in data) Console.WriteLine(x);
}