用一个IEnumerable<>源填充一个Dictionary<>。

9
我有一个VS2008 C# .NET 3.5应用程序,我想创建一个哈希表来存储给定对象的IEnumerable列表。
基本上,它看起来像这样:
public class MyCollection<T> : IEnumerable<T>
    where T: IMyData, new()
{
    private IDictionary<int, string> collection_ = new Dictionary<int, string>();

    // ...

    public void Add(T item)
    {
        collection_.Add(item.ID, item.Text);
    }

    public static MyCollection<T> Create(IEnumerable<T> source)
    {
        MyCollection<T> c = new MyCollection<T>();
        foreach(T item in source)
        {
            c.Add(item);
        }
        return c;
    }
}

这样做是有效的,但我想知道是否有更好的方法从一个IEnumerable源复制到另一个。有什么建议吗?
谢谢, PaulH

你的 Create 方法看起来毫无意义;它创建了一个名为 c 的空的 MyCollection<T>,对其参数 source 的元素进行操作,然后返回仍为空的 c。我会给你一些好处,假设 IMyData 有一个 Add 方法。 - Domenic
@Domenic - 你说得对。我复制得很糟糕。我已经纠正了它。不过,你的答案正是我在寻找的。谢谢。 - PaulH
1个回答

21
return source.ToDictionary(item => item.ID, item => item.Text);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接