【发布时间】:2021-10-18 16:57:58
【问题描述】:
我对 Linq 有问题,以前的代码是通过存储过程在 sql 中处理的,但现在它应该是通过 linq 的代码,这是我的数据库架构
我想要的是,从这些数据中
| orderNo | Type | serial |
|---|---|---|
| 1 | BN | BN 1 |
| 1 | BE | BE 1 |
| 2 | BN | BN 2 |
| 2 | BE | BE 2 |
| 3 | BN | BN 3 |
| 3 | BE | BE 3 |
变成这样:
| orderNo | be | bn |
|---|---|---|
| 1 | BE 1 | BN 1 |
| 2 | BE 2 | BN 3 |
| 3 | BE 2 | BN 3 |
找到一个问题和解决方案Source 1 - Stackoverflow,当我尝试我的代码时,我遇到了 SelectMany 的问题
这是我尝试过的
var results = data_tech.GroupBy(l => l.serial).SelectMany( g =>
new
{
Metadata = g.Key,
data = g
});
var pivoted = new List<PivotedEntity>();
foreach(var item in results)
{
pivoted.Add(
new PivotedEntity
{
Order= item.orderNo,
BE= item.data.Where(x => x.Name == "BE")
.FirstOrDefault().value,
BN= item.data.Where(x => x.Name == "BN")
.FirstOrDefault().value,
});
}
【问题讨论】:
-
将其更改为
GroupBy(l => l.OrderNo)并将BE = g.FirstOrDefault(x=> x.Type == "BE" && x.OrderNo == g.Key).Serial添加到匿名对象中。