I have a string like string strn = \"abcdefghjiklmnopqrstuvwxyz\"
and want a dictionary like:
Dictionary(){
{\'a\',0},
{
Use the .Select
operator first:
strn
.Select((x, i) => new { Item = x, Index = i })
.ToDictionary(x => x.Item, x => x.Index);
You could try something like this:
string strn = "abcdefghjiklmnopqrstuvwxyz";
Dictionary<char,int> lookup = strn.ToCharArray()
.Select( ( c, i ) => new KeyValuePair<char,int>( c, i ) )
.ToDictionary( e => e.Key, e => e.Value );
What am I doing wrong?
You're assuming there is such an overload. Look at Enumerable.ToDictionary - there's no overload which provides the index. You can fake it though via a call to Select
:
var dictionary = text.Select((value, index) => new { value, index })
.ToDictionary(pair => pair.value,
pair => pair.index);