Można to zrobić przy użyciu następujących metod:
Powiedzmy masz Lookup<int, string>
nazywa mylookup
z ciągów zawierających kilka słów, a następnie można umieścić IGrouping
wartości do string[]
i spakuj całość do słownika:
var mydict = mylookup.ToDictionary(x => x.Key, x => x.ToArray());
Aktualizacja
Po przeczytaniu Twojego komentarza, wiem, co rzeczywiście chcesz zrobić z odnośnika (patrz OPS previous question). Nie musisz konwertować go na słownik lub listę. Wystarczy skorzystać z odnośnika bezpośrednio:
var wordlist = " aa bb cc ccc ddd ddd aa ";
var lookup = wordlist.Trim().Split().Distinct().ToLookup(word => word.Length);
foreach (var grouping in lookup.OrderBy(x => x.Key))
{
// grouping.Key contains the word length of the group
Console.WriteLine("Words with length {0}:", grouping.Key);
foreach (var word in grouping.OrderBy(x => x))
{
// do something with every word in the group
Console.WriteLine(word);
}
}
Ponadto, jeżeli zlecenie jest ważne, zawsze można posortować IEnumerable
s za pomocą metod rozszerzenie OrderBy
lub OrderByDescending
.
Edit:
spojrzenie na edytowanej próbki kodu powyżej: Jeśli chcesz zamówić klawisze, wystarczy użyć metody OrderBy
. W ten sam sposób można zamówić słowa alfabetycznie za pomocą grouping.OrderBy(x => x)
.
@Qaesar: I odgadnąć odnosząc się do twojego innego pytania tutaj (http://stackoverflow.com/questions/11378338/spliting-string-into-words-length-based-lists-c-sharp), prawda? Tam masz '' Lookup ''. Co chcesz osiągnąć dokładnie? –
tak, dokładnie. Chcę pogrupować ciąg słów zgodnie z długością słowa. więc jaka struktura jest lepsza? czy mogę dalej używać Lookup ?? ponieważ po tym napiszę każdy TElement (tablica słów) do kolumny Excel. –
FSm
Ok, ale słowo musi być podzielone na tablicę lub coś innego. ponieważ później, napiszę każdy (słowo w słowie) do komórki kolumny Excel. – FSm