LINQ查询返回字典<字符串,字符串> [英] LINQ query to return a Dictionary<string, string>

查看:308
本文介绍了LINQ查询返回字典<字符串,字符串>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有MyClass的集合,我想查询使用LINQ to得到不同的值,并取回一个字典<字符串,字符串>的结果,但我想不通我怎么能做到这一点任何简单的比我做下面。你会一些清洁code是,我可以用得到的字典<字符串,字符串>我的结果

  VAR desiredResults =新字典<字符串,字符串>(StringComparer.OrdinalIgnoreCase);

VAR queryResults =(从MyClass的MC在myClassCollection
                    排序依据bp.SomePropToSortOn
                    选择新的KeyValuePair<字符串,字符串>(mc.KeyProp,mc.ValueProp))是不同的();

的foreach(在queryResults VAR项)
{
    desiredResults.Add(item.Key.ToString(),item.Value.ToString());
}
 

解决方案

直接使用 ToDictionary 方法。

  VAR的结果=
  //为乔恩斯基特指出,排序依据是没用在这里,我只是把它
  //演示如何使用排序依据的LINQ查询
  myClassCollection.OrderBy(MC => mc.SomePropToSortOn)
                   .ToDictionary(MC => mc.KeyProp.ToString()
                                 MC => mc.ValueProp.ToString(),
                                 StringComparer.OrdinalIgnoreCase);
 

I have a collection of MyClass that I'd like to query using LINQ to get distinct values, and get back a Dictionary<string, string> as the result, but I can't figure out how I can do it any simpler than I'm doing below. What would some cleaner code be that I can use to get the Dictionary<string, string> as my result?

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());
}

解决方案

Use the ToDictionary method directly.

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);

这篇关于LINQ查询返回字典&LT;字符串,字符串&GT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆