C#-以其他字符串作为辅助对象对字符串进行排序
是否有一个.NET内置方法可以解决我的场景C#-以其他字符串作为辅助对象对字符串进行排序,c#,.net,sorting,C#,.net,Sorting,是否有一个.NET内置方法可以解决我的场景 获取字符串数组,例如。{“Mark”、“Tom”、“Mat”、“Mary”、“Peter”} 我使用字符串“Ma”作为排序字符串助手 我的数组结果是{“马克”、“玛丽”、“马特”、“汤姆”、“彼得”} 我知道解决这个问题很容易,但我感兴趣的是这种方法的存在 附言。 使用.NET 4.0时,我认为这种方法不存在。 我解决了这个问题: public static string[] Sort(this string[] list, string start)
{“Mark”、“Tom”、“Mat”、“Mary”、“Peter”}
“Ma”
作为排序字符串助手{“马克”、“玛丽”、“马特”、“汤姆”、“彼得”}
使用.NET 4.0时,我认为这种方法不存在。
我解决了这个问题:
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();
}
如果需要使用字符串对元素进行排序,而不对其他元素进行排序,请使用以下方法:
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();
}
公共静态字符串[]排序(此字符串[]列表,字符串开始)
{
列表l=新列表();
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));
返回l.ToArray();
}
使用.Net 3.5(及更高版本)和Linq中的方法将能够执行您想要的操作。例如:
var ordered = strings.OrderByDescending(s => s.StartsWith("Ma")).ThenBy(s => s);
具有需要排序的匹配索引的字符串。其他没有匹配字符串的字符串呢?如果需要,可以筛选出所有匹配的字符串并对其进行排序,最后将剩余元素附加到列表中。对仅匹配指定前缀的元素进行排序,同时将其他元素保留在其原始相对顺序中,有什么好处?排序的元素总是在开头结束吗?家庭作业,如果是,请标记它。这一个的linq fu很强+1.
var ordered = strings.OrderByDescending(s => s.StartsWith("Ma")).ThenBy(s => s);