是否有.NET內置方法可以解決我的方案?C# - 由其他字符串作爲幫手的字符串排序
- 得到了一串字符串ex。
- 我用字符串作爲
"Ma"
排序字符串幫手 - 我的陣列結果是
{ "Mark", "Mary", "Mat", "Tom", "Peter" }
我知道函數解決,這將是很容易,但我'感興趣的是這樣的方法存在。
PS。 使用.NET 4.0
是否有.NET內置方法可以解決我的方案?C# - 由其他字符串作爲幫手的字符串排序
"Ma"
排序字符串幫手{ "Mark", "Mary", "Mat", "Tom", "Peter" }
我知道函數解決,這將是很容易,但我'感興趣的是這樣的方法存在。
PS。 使用.NET 4.0
使用.Net 3.5(及以上版本)OrderByDescending和Linq中的10種方法將能夠做到你想要的。例如:
var ordered = strings.OrderByDescending(s => s.StartsWith("Ma")).ThenBy(s => s);
我認爲這種方法不存在。
我這個解決:
public static string[] Sort(this string[] list, string start)
{
List<string> l = new List<string>();
l.AddRange(list.Where(p => p.StartsWith(start)).OrderBy(p => p));
l.AddRange(list.Where(p => !p.StartsWith(start)).OrderBy(p => p));
return l.ToArray();
}
所以,你可以做
string[] list = new string[] { "Mark", "Tom", "Mat", "Mary", "Peter" };
string[] ordered_list = list.Sort("Ma");
如果您需要訂購與您的字符串元素,並讓別人未排序,使用此:
public static string[] Sort(this string[] list, string start)
{
List<string> l = new List<string>();
l.AddRange(list.Where(p => p.StartsWith(start)).OrderBy(p => p));
l.AddRange(list.Where(p => !p.StartsWith(start)));
// l.AddRange(list.Where(p => !p.StartsWith(start)).OrderByDescending(p => p));
return l.ToArray();
}
具有需要排序的匹配索引的字符串。那些沒有匹配字符串的其他字符串呢?如果你願意,你可以過濾掉所有匹配的字符串並對它們進行排序,最後在列表中添加剩餘的元素。 –
對僅匹配指定前綴的元素進行排序,而將其他元素保留其原始相對排序的好處是什麼?排序的元素是否總是在開始時結束? –
家庭作業,如果有的話請給它加標籤。 –