字典排序我用的是这个varordered=dictionary.Keys.OrderBy(x=>x);订购字典。这很好地按字母顺序对字典进行了排序,我想保持这种方式并添加一些例外......所以现在,有序字典的输出看起来像这样:1:“0603C”“113456”12:“0603C”“984132”83:“0603R”“11115”34:“0603R”“13554”15:“1608C_1.0”“119764”26:“1608C_1.0”“147429”547:“1608R_1.0”“122951”"48:"1608R_1.0""147446"19:"1608R_1.0""147448"2310:"3216""110762"211:"TANT23""119764"2//更多信息....但我希望它看起来像这样:1:“0603R”“11115”32:“0603R”“13554”13:“0603C”“113456”14:“0603C”“984132”85:“1608R_1。0""122951"4//**注意**:1608和0603之后的“R”和“C”结尾6:“1608R_1.0”“147446”1//被调换了。切换所有"C"和"R"7:"1608R_1.0""147448"23//如果它们之前的值相同则结束。8:"1608C_1.0""119764"29:"1608C_1.0""147429"5410:"3216""110762"211:"TANT23""119764"2//更多...这就是到目前为止我的代码看起来像:StreamWritersw=newStreamWriter(saveFile.FileName);字典dictionary=newDictionary();列表lineList=newList();整数j=1;lineList=theFuji1List.Select(line=>{intnameLength=line.Name.Length;if(line.PartDescription!="")returnline.PartDescription+""line.PartNumber+""+line.TWidth+""+line.Name.Remove(1,nameLength-1)+"n";否则返回"N/A"+line.PartNumber+""+line.TWidth+""+line.Name.Remove(1,nameLength-1)+"n";}).Where(x=>!(x.Contains("FID")||x.Contains("EXCLUDE"))).ToLisT();foreach(lineList中的字符串单词){if(dictionary.ContainsKey(word))dictionary[word]++;否则字典[单词]=1;}varordered=dictionary.Keys.Orderby(x=>x);//这就是我认为我需要改变的地方?foreach(有序的字符串键){string[]splitKey=key.Split('');sw.WriteLine(string.Format("{0}:"{1}""{2}"{3}",j,splitKey[0],splitKey[1],dictionary[key]));j++;只需将“R”修改为排序表达式的“B”,使其位于“C”之前:varordered=dictionary.Keys.Orderby(x=>Regex.Replace(x,@"^(d+)R","$1B"));这不会修改您的密钥——它只会影响排序OrderBy()有一个重载OrderBy(Func,IComparer),您可以将自己的比较器传递给它。编辑:您可以像这样实现自定义比较器类:publicclassCustomComparer:IComparer{publicintCompare(objectx,objecty){//执行比较//如果两个项目相等则返回0,如果x小于则小于零大于y,如果x大于y,则大于零。我会在IComparer实现中使用正则表达式并将其传递给OrderBy语句:varordered=dictionary.Keys.OrderBy(x=>x,newCodeComparer());其中以上就是C#学习教程的全部内容:字典排序分享,如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注—privateclassCodeComparer:IComparer{publicintCompare(stringleft,stringright){//TODO:使用正则表达式或其他方法拆分成组件string[]leftComponents,rightComponents;for(inti=0;i本文收集自网络,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载,请注明出处:
