c# - 从 Ilist 获取 Idictionnary

标签 c#

如何从 IList 中获取 IDictionnay

最佳答案

您可以使用 Linq 通过使用 ToDictionary 扩展方法并提供获取键的表达式来轻松地从列表中获取字典 - 例如

internal class Program
{
    private static void Main(string[] args)
    {
        IList<Person> list = new List<Person> {new Person("Bob", 40), new Person("Jill", 35)};
        IDictionary<string, Person> dictionary = list.ToDictionary(x => x.Name);
    }
}

public class Person
{
    private readonly int _age;
    private readonly string _name;

    public Person(string name, int age)
    {
        _name = name;
        _age = age;
    }

    public int Age
    {
        get { return _age; }
    }

    public string Name
    {
        get { return _name; }
    }
}

或者,正如 Jon 指出的那样,如果您需要为 Dictionary 条目使用不同的值,您还可以指定第二个表达式来获取该值 - 如下所示:

IDictionary<string, int> dictionary2 = list.ToDictionary(x => x.Name, x => x.Age);

关于c# - 从 Ilist 获取 Idictionnary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3210583/

相关文章:

c# - Akka.net - 尝试测试重复的预定消息

c# - 如何在共享相同对象实例的单独文件/类中编写类的属性

c# - 使用 Identity 将新表添加到 ASP .NET Core MVC 应用程序中

c# - 通知消息 Asp.net Core

c# - 为什么我不能将方法作为对象传递?

c# - 解析/反序列化 MTOM/XOP 数据 .NET

c# - 如何在 C# 中从 C.dll 编码字节*

c# - 如何在事先不知道类型的情况下使用 XmlSerializer 反序列化可能属于基类或派生类的对象?

c# - SqlDataReader 是否将所有内容存储为字符串?

c# - 可以将条件编译符号添加到 csproj.user 文件吗?