gpt4 book ai didi

c# - 在 .GroupBy() 之后获取 List

转载 作者:行者123 更新时间:2023-11-30 20:27:58 24 4
gpt4 key购买 nike

谁能解释一下我如何使用 GroupBySelect从这里得到:

public class BadClass{
public int id; //can be grouped by id
public string name; //identical for the same Id
public bool flag; //identical for the same Id
public int bId;
public string bName;
public int cId;
public string cName;
}

这个:List <A>其中:

public class A {
public int id;
public string name;
public bool flag;
public List<B> bList;
}

public class B {
public int id;
public string name;
public C c;
}

public class C {
public int id;
public int name;
}

我在 BadClass 中制作数据示例:

List<BadClass> badClass = new List<BadClass>() {
new BadClass(){ id = 1, name = "A1", flag = true, bId = 1, bName = "B1", cId = 1, cName = "C1" },
new BadClass(){ id = 1, name = "A1", flag = true, bId = 2, bName = "B2", cId = 3, cName = "C2" },
new BadClass(){ id = 1, name = "A1", flag = true, bId = 3, bName = "B3", cId = 1, cName = "C1" },
new BadClass(){ id = 2, name = "A2", flag = false, bId = 4, bName = "B4", cId = 2, cName = "C2" },
new BadClass(){ id = 2, name = "A2", flag = false, bId = 5, bName = "B5", cId = 3, cName = "C3" }
};

/*
+----+------+-------+-----+-------+-----+-------+
| id | name | flag | bId | bName | cId | cName |
+----+------+-------+-----+-------+-----+-------+
| 1 | A1 | true | 1 | B1 | 1 | C1 |
+----+------+-------+-----+-------+-----+-------+
| 1 | A1 | true | 2 | B2 | 1 | C1 |
+----+------+-------+-----+-------+-----+-------+
| 1 | A1 | true | 3 | B3 | 3 | C3 |
+----+------+-------+-----+-------+-----+-------+
| 2 | A2 | false | 4 | B4 | 2 | C2 |
+----+------+-------+-----+-------+-----+-------+
| 2 | A2 | false | 5 | B5 | 3 | C3 |
+----+------+-------+-----+-------+-----+-------+
*/

我试着做类似的东西:

var result = badClass.GroupBy(x => x.id).Select(x => x. ???? ) ???? =(

但不知道如何使它正确。

更新:

var result = badClass
.GroupBy(x => x.id)
.Select(x => new A {
id = x.Key,
name = x.First().name,
flag = x.First().flag,
bList = x.ToList()
});

这是bList = x.ToList(); 中的错误我需要更改名称bIdid等等

回答:

var result = badClass
.GroupBy(x => x.id)
.Select(x => new A
{
id = x.Key,
name = x.First().name,
flag = x.First().flag,
bList = badClass.Where(y => y.id == x.Key).Select(y =>
new B { id = y.bId, name = y.bName, c = new C { id = y.cId, name = y.cName } }).ToList()
});

最佳答案

只需添加一个 .Select 和 ToList,它将包含您需要的所有项目

var result = badClass.GroupBy(x => x.id).Select(x => x.ToList());

关于c# - 在 .GroupBy() 之后获取 List<SomeClass>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48025898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com