想象一下,我有一個包含以下值的串列:
{"abc","04","bca","10","cba","11","01"}
如果我在串列中使用普通的 c# OrderBy(),它將導致:
{"01","04","10","11","abc","bca","cba"}
但我的意圖有點相反:
{"abc","bca","cba","01","04","10","11"}
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
下面的解決方案呢,
var input = new List<string>(){"abc","04","bca","10","cba","11","01"};
var result = input.OrderBy(x => x.All(Char.IsDigit));
//You can even sort it, strings and numbers using `ThenBy()`
var result = input.OrderBy(x => x.All(Char.IsDigit)).ThenBy(x => x);
在線試用
解釋:
x.All(Char.IsDigit)true如果所有字符都是數字,則回傳。否則回傳false。當我們將其撰寫為謂詞時,OrderBy()將根據.All().- 所有
false值都將排在第一位(在我們的例子中,非數字攪拌)并且所有數字字串都將排在最后
uj5u.com熱心網友回復:
您可以通過正則運算式將串列拆分為兩個串列,字母和數字,然后排序,然后再次加入它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457461.html
