有没有更好的方法把列表变成列表C#
我想要有下面的类,我想要使用LINQ将我的对象从有没有更好的方法把列表变成列表C#,c#,linq,C#,Linq,我想要有下面的类,我想要使用LINQ将我的对象从List更改为List,并且输出将是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 {
List
更改为List
,并且输出将是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
}
我现在有一个工作,但看起来很混乱
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
公共类字符
{
公共整数Id
公共字符串名
公共清单项目
}
公共类字符
{
[JsonIgnore]公共int-Id
[JsonIgnore]公共字符串名称
公共字符串ItemName
公共int ItemId
}
公共列表函数(){
列表数据=getFromDB();
List Characters=data.GroupBy(x=>new{x.Id,x.Name})。选择(y=>newcharacter()
{
Id=y.Key.Id,
Name=y.Key.Name,
Items=y.ToList()
}).ToList();
返回字符
编辑:我的意思是我不想在类中使用JsonIgnore,我想在类字符中使用
列表
,而不是列表
,如果你想字符的话。项
是列表
而不是列表
首先,我们必须更改对象定义:
public class Character
{
public int Id {get;set;}
public string Name {get;set;}
public List<Item> Items {get;set;}
}
我看不出你的解决方案有什么“凌乱”。请定义什么是“不那么凌乱”。什么是“变通方法”(对我来说,它看起来像是这种情况下的标准数据操作)?还请定义“更好”。我觉得很好-可能将metod
函数()重命名为GetCharacters()
您可以像刚才一样使用select和To List在列表中投影分组元素:Items=y.select(c=>newitem{ItemName=c.ItemName,ItemId=c.Item})
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
public class Character
{
public int Id {get;set;}
public string Name {get;set;}
public List<Item> Items {get;set;}
}
Items = y.Select(c=> new Item{ ItemName = c.ItemName, ItemId = c.Item }).ToList()