Имея строку типа «CAATCCAAC» Я генерируя все kmers от него (к является переменной, но должно быть меньше, чем строка) делает:Как сортировать список <string> в произвольном порядке
string dna = "CAATCCAAC";
dna = dna.Replace("\n", "");
int k = 5;
List<string> kmerList = new List<string>();
var r = new Regex(@"(.{" + k + @"})");
while (dna.Length >= k)
{
Match m = r.Match(dna);
//Console.WriteLine(m.ToString());
kmerList.Add(m.ToString());
dna = dna.Substring(1);
}
var sortedList = kmerList.OrderBy(i =>'A').
ThenBy(i => 'C').
ThenBy(i => 'G').
ThenBy(i => 'T').ToList();
foreach (string result in sortedList)
{
Console.WriteLine(result);
}
Я хочу, чтобы отсортировать результат
AATCC
ATCCA
CAATC
CCAAC
TCCAA
Однако я получаю
CAATC
AATCC
ATCCA
TCCAA
CCAAC
Как сортировать элементы, чтобы они заказали первый 'A', затем 'C', затем 'G' и, наконец, 'T'?
Я попытался
var sortedList = kmerList.OrderBy(i =>'A').
ThenBy(i => 'C').
ThenBy(i => 'G').
ThenBy(i => 'T').ToList();
, но это не будет работать
Я хочу результат нравится быть aplied для всех строки, как
AAAA
AACG
ACCC
ACCG
ACCT
...
TTTT
Таким образом, с помощью "Custom" для того, вы имеете в виду " Алфавитный порядок? :) –
вам не нужно заказывать персонажем так, просто сравните строки. –
Это кажется мне в алфавитном порядке. Но также вы можете написать свой собственный класс сравнения и использовать его в методе сортировки – Yoghurt