【问题标题】:Roll populating a Dictionary into a LINQ of For expression将字典填充到 For 表达式的 LINQ 中
【发布时间】:2010-10-21 21:16:31
【问题描述】:

我有一个数据对象

  Data = class
  public
    s: string;
    i: Integer;
  end;

其中许多都在一个列表(或某个集合)中:

  var ol : List<Data> := new List<Data>;
  ol.Add(new Data(s := 'One', i := 1));
  ol.Add(new Data(s := 'Two', i := 2));
  ol.Add(new Data(s := 'Three', i := 3));
  ol.Add(new Data(s := 'Four', i := 4));
  ol.Add(new Data(s := 'Five', i := 5));

我想把它放在字典里:

  var l: Dictionary<string, data> := new Dictionary<String,Data>;

我知道我可以为每个循环做一个 for 或 for 来做到这一点

  for each d in ol do
  begin
    l.Add(d.s, d);
  end;

但我想使用 LINQ 语句(首选)或 For Loop expression。只返回一个元素时很容易,但不确定字典的两个元素的语法。

【问题讨论】:

    标签: .net linq delphi-prism oxygene


    【解决方案1】:

    编辑:我直接进入了这个,但我不熟悉 Delphi。在 C# 中,它就像 ToDictionary 调用一样简单:

    var dict = ol.ToDictionary(o => o.s, o => o);
    

    我认为 Delphi 等价物是:

    var dict := ol.ToDictionary(o -> o.s, o -> o);
    

    【讨论】:

    • 我知道这很简单。谢谢!
    • @Jim 太棒了!我不知道 Delphi 添加了对 LINQ 的支持。我学到了一些新东西:)
    • 是的,除了它是 ol.ToDictionary(o -> o.s, o -> o);因为我想要对象作为值。在实际代码中,对象比一个值更复杂。
    • 它实际上是 Delphi Prism,它由 Oxygene 提供支持,是在 Visual Studio 中运行的仅 .NET 和 Mono 版本的 Delphi。
    • @Jim 已修复。感谢您的信息!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多