我正在将输出作为对象list
lstResourceList
HID NAME DID APID PID
3 Aban 1 1 1
4 Abbas 2 8 5
4 Abbas 2 5 5
5 SAAD 4 1 1
6 GAURAV 4 5 5
8 Radhesh 2 -1 -1
1 Abaan 1 8 -1
我想首先从这些记录中选择 HID 计数> 1 的记录。说我得到
HID NAME DID APID PID
4 Abbas 2 8 5
4 Abbas 2 5 5
现在从这些记录中,我希望选择APID不等于8的记录。也就是说=>
HID NAME DID APID PID
4 Abbas 2 5 5
现在我想从我的输出列表中删除此记录,即最终输出
HID NAME DID APID PID
3 Aban 1 1 1
4 Abbas 2 8 5
5 SAAD 4 1 1
6 GAURAV 4 5 5
8 Radhesh 2 -1 -1
1 Abaan 1 8 -1
对 linq 操作有什么建议吗???
首先,将您的项目分组HID
以查找共享HID
的元素。过滤后,您可以在 APID
上按自己的组过滤每个组。之后,平展结果以在单个列表中获取要删除的项目。
应该是这样的:
var toRemove = lstResourceList.GroupBy(x => x.HID)
.Where(grp => grp.Count() > 1)
.SelectMany(grp => grp.Where(x => x.APID != 8))
.ToList();
foreach(var item in toRemove)
lstResourceList.Remove(item);
这应该可以做到:
lstResourceList = lstResourceList.Where(x => x.HID>1 && x.APID != 8).ToList();
编辑:我的答案是错误的。我误解了这个问题。请参阅下面的评论