Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有更好的方法把列表变成列表C#_C#_Linq - Fatal编程技术网

有没有更好的方法把列表变成列表C#

有没有更好的方法把列表变成列表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 {

我想要有下面的类,我想要使用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
{
    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()