LINQ查询返回一个Dictionary<string, string>

我有一个MyClass的集合,我想使用LINQ查询得到不同的值,并得到一个Dictionary<字符串,字符串>作为结果,但我不知道如何做它比我下面做的更简单。什么样的代码更干净,我可以用它来获得Dictionary<string, string>作为我的结果?

var desiredResults = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);


var queryResults = (from MyClass mc in myClassCollection
orderby bp.SomePropToSortOn
select new KeyValuePair<string, string>(mc.KeyProp, mc.ValueProp)).Distinct();


foreach (var item in queryResults)
{
desiredResults.Add(item.Key.ToString(), item.Value.ToString());
}
184815 次浏览

直接使用ToDictionary方法。

var result =
// as Jon Skeet pointed out, OrderBy is useless here, I just leave it
// show how to use OrderBy in a LINQ query
myClassCollection.OrderBy(mc => mc.SomePropToSortOn)
.ToDictionary(mc => mc.KeyProp.ToString(),
mc => mc.ValueProp.ToString(),
StringComparer.OrdinalIgnoreCase);

看看ToLookup和/或ToDictionary扩展方法。