请为以下查询建议所需的 linq

  • 本文关键字:linq 查询 c# linq
  • 更新时间 :
  • 英文 :


我正在将输出作为对象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();

编辑:我的答案是错误的。我误解了这个问题。请参阅下面的评论

相关内容

  • 没有找到相关文章

最新更新