【问题标题】:simple linq needed需要简单的 linq
【发布时间】:2012-05-01 21:58:00
【问题描述】:

我有一个 Link 类型的 Linq 对象数组,其中包含以下值:

new Link {SourceId = 1, TargetId=22223}
new Link {SourceId = 1, TargetId=2221223}
new Link {SourceId = 1, TargetId=222}
new Link {SourceId = 2, TargetId=26556}
new Link {SourceId = 2, TargetId=264}
new Link {SourceId = 2, TargetId=262}
new Link {SourceId = 2, TargetId=29}

class Link
{
    public int SourceId { get; set; }
    public int TargetId { get; set; }
}

我需要一个 LINQ 语句来输出包含以下内容的字典 Dictionary<int, List<int>>

不同的SourceId 作为键,与该键关联的TargetId 列表作为值。

非常感谢。

【问题讨论】:

  • 你确定这和 LINQ 有关系吗?
  • @MarioDeSchaepmeester - 你确定这是作业吗?
  • @HenkHolterman 在您编辑之前仍然存在的那句话看起来非常像是从家庭作业中抄来的。

标签: c# linq


【解决方案1】:
var dic = links.GroupBy(x=>x.SourceID)
               .ToDictionary(x=> x.Key, x => x.Select(y=>y.TargetId).ToList());

【讨论】:

    【解决方案2】:
    Dictionary<int, int> dict = links.ToDictionary(item => 
                                                   item.SourceId ,
                                                   item => item.TargetId)
    

    【讨论】:

    • 这不是 OP 想要的。
    • 当您尝试将重复的键插入字典时,这可能会失败,不是吗?缺少 GroupBy?
    • 每个键有多个项目,ToDictionary 不起作用,但 ToLookup 会起作用(但它不会返回列表字典)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多