Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-以其他字符串作为辅助对象对字符串进行排序_C#_.net_Sorting - Fatal编程技术网

C#-以其他字符串作为辅助对象对字符串进行排序

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)

是否有一个.NET内置方法可以解决我的场景

  • 获取字符串数组,例如。
    {“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);