Returning a Dictionary<string, string> from a linq query Returning a Dictionary<string, string> from a linq query asp.net asp.net

Returning a Dictionary<string, string> from a linq query


Try this:

var dict = TheTable.Select( t => new { t.Col1, t.Col2} )               .ToDictionary( t => t.Col1, t => t);

Remember in select lambda you will perform projection and create some anonymous object. Then in ToDictionary you will pass two parameters: First Parameter is a lambda to specify the key; in code above we are choosing Col1 to be the key. Second parameter is a lambda to specify the value; in code above we are choosing the object itself to be the value.

If you want the value to be an anonymous type, change the 2nd lambda like this:

ToDictionary( t => t.Col1, t => new { t.Col2 });

If you want the value to be a type you have defined, change the 2nd lambda like this:

ToDictionary( t => t.Col1, t => new YourType { Prop1 = t.Col2 });


Since you just need value of one first row why not to do that first:

 var row = TheTable.FirstOrDefault();

And than just construct that dictionary if you got the result:

 return row == null ? null :        new Dictionary<string,string>{ {row.Column1, row.Column2 } };