【问题标题】:How to read lines to dictionary with linQ [closed]如何使用 linQ 将行读入字典 [关闭]
【发布时间】:2013-04-30 17:07:08
【问题描述】:

好的,我得到了下面的代码,但它不工作

我希望行是键,值是 0

c# 4.5

    ConcurrentDictionary<string, int> dicFailedProxies = 
    new ConcurrentDictionary<string, int>();

   dicFailedProxies = File.ReadAllLines("failed_proxies.txt")
   .Select(line => line).Distinct()
   .ToDictionary(values => values, 0);

【问题讨论】:

  • -1 表示“它不工作” - 详细说明。
  • 为那些想知道错误的人添加了图像
  • @MonsterMMORPG 请输入错误的文本,而不是文本的截图。
  • 如果每个值都是0,为什么要让它成为字典?
  • @valverij 为了以后对值的操作,我假设。

标签: c# linq dictionary


【解决方案1】:

问题是您需要为ToDictionary 的第二个参数提供一个lambda 表达式。 ToDictionary 还返回一个 Dictionary&lt;T, U&gt;,因此您将无法将其分配给 ConcurrentDictionary&lt;T, U&gt; 的实例。

这应该可以解决问题:

var dicFailedProxies = 
    File.ReadLines("failed_proxies.txt")
        .Distinct()
        .ToDictionary(line => line, line => 0);

当然,如果您想将其保留为ConcurrentDictionary&lt;T, U&gt;,您可以这样做:

var dicFailedProxies = new ConcurrentDictionary<string, int>(
    File.ReadLines("failed_proxies.txt")
        .Distinct()
        .ToDictionary(line => line, line => 0));

【讨论】:

  • 真的不需要Select 转换,不是吗?
  • @Tejas 正确;它什么也没做。
  • 嘿,是的,这更像是一个反问。我会编辑掉@p.s.w.g
  • @Tejas 好点。谢谢
  • 是的,我知道无法分配并发字典,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多