c# - 有没有更好的方法将列表变成列表 C#
问题描述
我想要有以下课程,并且我想将我的对象从使用 LINQ 更改List<CharacterDto>
为List<Character>
使用 LINQ,并且输出将在 json 中。
public class Character
{
public int Id
public string Name
public List<item> Items
}
public class Item
{
public string ItemName
public int ItemId
}
public class CharacterDto
{
public int Id
public string Name
public string ItemName
public int ItemId
}
例子:
CharacterDto:
{Id = 1, Name = "Archer", ItemName = "Bow", ItemId = 2},
{Id = 1, Name = "Archer", ItemName = "Armor", ItemId = 1},
{Id = 2, Name = "Warrior", ItemName = "Sword", ItemId = 3},
{Id = 2, Name = "Warrior", ItemName = "Armor", ItemId = 1},
{Id = 3, Name = "Mage", ItemName = "Armor", ItemId = 1}
Character:
{Id = 1, Name = "Archer", Items:{ItemName = "Armor", ItemId = 1},{ItemName = "Bow", ItemId = 2}},
{Id = 2, Name = "Warrior", Items:{ItemName = "Armor", ItemId = 1},{ItemName = "Sword", ItemId = 3}},
{Id = 3, Name = "Mage", Items:{ItemName = "Armor", ItemId = 1}}
我目前有一个解决方法,但它看起来很乱。
public class Character
{
public int Id
public string Name
public List<CharacterDto> Items
}
public class CharacterDto
{
[JsonIgnore]public int Id
[JsonIgnore]public string Name
public string ItemName
public int ItemId
}
public List<character> function(){
List<CharacterDto> data = getFromDB();
List<Character> Characters = data.GroupBy(x => new {x.Id, x.Name}).Select(y => new Character()
{
Id = y.Key.Id,
Name = y.Key.Name,
Items = y.ToList()
}).ToList();
return Characters
编辑:我的意思是我不想在课堂上使用 JsonIgnore,我想在课堂上使用List<item>
而不是List<CharacterDto>
在课堂上使用 Charactor
解决方案
如果你想Character.Items
成为一个List<item>
而不是List<CharacterDto>
.
首先,我们必须更改对象定义:
public class Character
{
public int Id {get;set;}
public string Name {get;set;}
public List<Item> Items {get;set;}
}
然后您可以使用 Select 将分组映射CharacterDto
到Item
:
Items = y.Select(c=> new Item{ ItemName = c.ItemName, ItemId = c.Item }).ToList()
推荐阅读
- regex - 如何捕获单词边界但忽略单词中的空格?
- java - admob 测试横幅未显示在应用程序中
- javascript - 如何在formField ReactJs中设置输入值
- datasource - 使用Angular 7和材料在表格中动态添加一行
- reactjs - 如何在 reactjs 组件中将函数作为道具传递?
- r - ggalluvial - 在轴上删除一些观察结果
- python - 如何使用 Pandas 扁平化层次结构
- json - Spring Cloud 合约测试中的关键验证
- filter - 如果单元格值大于 0,则复制行 - Google 表格
- java - 无法连接到 IntelliJ 之外的 SQLite 数据库