我是一名初学者 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 }
在哪里创建匿名 object
有id
和 person
特性。 id
是递增的 key
而 person
只是你的元素 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/