C# List<object> 到 Dictionary<key, <object>>

标签 c# linq list dictionary

我是一名初学者 c# 开发人员,我需要从我的列表中创建一个对象字典。首先,让我将我的对象定义为 Person。

public class Person 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

现在我有了我的个人对象列表。 List<Person> 如何在 LinQ 中查询以将其转换为我列表中的人物词典? 我想要的输出是:

Dictionary<key, <Person>>

其中 key 是每个 Person 对象的递增整数.. 任何帮助表示赞赏。谢谢。

我在网上找到了这段代码,但它适用于 List<string>

List<string> List1
var toDict = List1.Select((s, i) => new { s, i })
             .ToDictionary(x => x.i, x => x.s)

最佳答案

一种最直接的方法是使用 int key作为key像这样:

List<Person> List1 = new List<Person>();
int key = 0; //define this for giving new key everytime
var toDict = List1.Select(p => new { id = key++, person = p })
    .ToDictionary(x => x.id, x => x.person);

关键是lambda表达式:

p => new { id = key++, person = p }

在哪里创建匿名 objectidperson特性。 id是递增的 keyperson只是你的元素 List<Person>

如果你需要使用Person的 Id,只需使用:

List<Person> List1 = new List<Person>();
var toDict = List1.Select(p => new { id = p.Id, person = p })
    .ToDictionary(x => x.id, x => x.person);

关于C# List<object> 到 Dictionary<key, <object>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36612358/

相关文章:

c# - 绑定(bind) ComboBox ItemsSource 在 WPF 中不起作用

python - 如何从列表列表中获取跨多个列表的项目子序列?

c# - 获取 List<T> 中最小值索引的快速/有效方法?

java - Freemarker 宏中的 HashMap 不起作用

c# - SQL Server 在哪里存储已部署的 CLR 程序集?

c# - 在 MVP-VM 事件或按钮单击中使用 WPF xaml

c# - DotNet HighCharts ,用查询结果填充饼图

c# - 为什么这个 linq 查询只返回第一个属性?

.net - NHibernate.Linq : session becomes dirty after select

c# - LINQ合并多个列表