我必须按型号对数据进行分组,获取分组项的总和,然后进行自定义排序。我在返回“类型”的值(排序顺序)时遇到问题。
我已经尝试了许多不同的方法,这就是我现在所处的位置。
type = x.type不正确。
样品请求数据:
[
{
"type": "ANTENNA MAKE - MODEL",
"sector": "F",
"position": "7",
"qty": "3",
"model": "NNH4-65D-R6"
},
{
"type": "ANTENNA MAKE - MODEL",
"sector": "A",
"position": "1",
"qty": "3",
"model": "NNH4-65D-R6"
},
{
"type": "RRH - WCS band",
"sector": "B",
"position": "1",
"qty": "1",
"model": "B2/B66A 8843"
},
{
"type": "RRH - WCS band",
"sector": "B",
"position": "1",
"qty": "3",
"model": "B2/B66A 8843"
}
]
查询
var ModelList = current.Where(x => !string.IsNullOrWhiteSpace(x.model) && !string.IsNullOrWhiteSpace(x.type))
.OrderBy(x => x.type == "ANTENNA MAKE - MODEL" ? 1 :
x.type == "Antenna RET Motor" ? 2 :
x.type == "SURGE ARRESTOR" ? 3 :
x.type == "DIPLEXER" ? 4 :
x.type == "DUPLEXER" ? 5 :
x.type == "Antenna RET CONTROL UNIT" ? 6 :
x.type == "TMA/LNA" ? 7 :
x.type == "CURRENT INJECTORS FOR TMA" ? 8 :
x.type == "PDU FOR TMAS" ? 9 :
x.type == "FILTER" ? 10 :
x.type == "SQUID" ? 11 :
x.type == "RRH - 700 band" ? 12 :
x.type == "RRH - 850 band" ? 13 :
x.type == "RRH - 1900 band" ? 14 :
x.type == "RRH - AWS band" ? 15 :
x.type == "RRH - WCS band" ? 16 :
x.type == "Additional RRH #1 - any band" ? 17 :
x.type == "Additional RRH #2 - any band" ? 18 :
x.type == "Additional Component 1" ? 19 :
x.type == "Additional Component 2" ? 20 :
x.type == "Additional Component 3" ? 21 :
x.type == "DC TRUNK" ? 22 :
x.type == "DC BLOCK" ? 23 : 23)
.GroupBy(x => x.model)
.Select(x => new {
model = x.Key,
type = x.type,
qty = x.Sum(y => y.qty),
elev = x.Average(z => z.elev)
}).ToList();
在此示例中,我希望收到以下信息:
[
{
"model": "NNH4-65D-R6",
"type": "ANTENNA MAKE - MODEL",
"qty": 6,
"elev": null
}
{
"model": "B2/B66A 8843",
"type": "RRH - WCS band",
"qty": 4,
"elev": null
}
]
答案 0 :(得分:0)
像这样调整您的选择:
.Select(x => new {
model = x.Key,
type = x.Select(y => y.type).First(),
qty = x.Sum(y => y.qty),
elev = x.Average(z => z.elev)
}).ToList();