我的输出为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操作的任何建议???
答案 0 :(得分:3)
首先,在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);
答案 1 :(得分:0)
这应该这样做:
lstResourceList = lstResourceList.Where(x => x.HID>1 && x.APID != 8).ToList();
编辑:我的回答是错误的。我误解了这个问题。请参阅以下评论