【发布时间】:2021-03-09 11:20:27
【问题描述】:
嗨,有人可以帮忙吗,我有一个包含我的促销代码的列表,在列表中我想只返回出现一次的促销代码,即没有重复,请参阅下面来自 JSON 的数据,我想返回促销代码 A123 和 B500 并将它们存储在另一个列表中。
[
{
"PromCode": "A123",
"Priority": 1,
"offer": "Win a Free Cap",
"StartDte": "2020-08-11T00:16:23.184Z",
"endDte": "2020-09-10T17:16:23.184Z",
},
{
"PromCode": "A100",
"Priority": 1,
"offer": "Win a perfume",
"StartDte": "2020-08-11T00:16:23.184Z",
"endDte": "2020-09-10T17:16:23.184Z",
},
{
"PromCode": "A100",
"Priority": 2,
"offer": "Win a Phone pouch",
"StartDte": "2020-09-11T00:16:23.184Z",
"endDte": "2020-10-10T17:16:23.184Z",
},
{
"PromCode": "B500",
"Priority": 1,
"offer": "Win a free router",
"StartDte": "2020-08-11T00:16:23.184Z",
"endDte": "2020-09-10T17:16:23.184Z",
},
{
"PromCode": "H300",
"Priority": 2,
"offer": "Win a free router",
"StartDte": "2020-08-11T00:16:23.184Z",
"endDte": "2020-09-10T17:16:23.184Z",
},
]
我有一个包含所有这些促销代码的列表,如下所示,注意:我已经序列化了 JSON 对象成功
var existingProms = await _Repo.GetAllPromCodes(promCodeList);
我试图得到像这样在列表中出现一次的那些
var distinctList = existingProms.GroupBy(x => x.PromCode).Where(y => y.Count() == 1)
.Select(x => x.Key.ToString()).ToList();
请注意,上面返回不同的 proms(B500,A123,H300) 但仅返回 PromCode 而不是该对象中的所有其他字段。我想返回我的所有对象的列表优先级=1。意味着不同的List最终结果必须包含两个对象,如下图所示。
distinctList = {
"PromCode": "A123",
"Priority": 1,
"offer": "Win a Free Cap",
"StartDte": "2020-08-11T00:16:23.184Z",
"endDte": "2020-09-10T17:16:23.184Z",
},
{
"PromCode": "B500",
"Priority": 1,
"offer": "Win a free coffee mug",
"StartDte": "2020-08-11T00:16:23.184Z",
"endDte": "2020-09-10T17:16:23.184Z",
},
【问题讨论】:
-
您正在寻找 unique 而不是不同的对象。
Distinct表示即使有重复也只返回一行。 LINQ 有一个Distinct()方法,但这不是你真正想要的
标签: c# asp.net json linq asp.net-core