从列表或数组中过滤记录

问题描述 投票:0回答:0

我正在尝试根据以下条件过滤 C# 列表或数组中的记录 - 我们有唯一的发送者和多个接收者。 考虑 Sender 值为 1,

  1. 如果 Sender 是 1,Receiver 是 2 以及 Sender 是 2,Receiver 是 1 那么它应该过滤掉那些记录
  2. 它应该从上面的过滤结果中花费最多的时间,并且只为每个接收者返回一条记录(发送者、接收者、时间和值)。 我的首选是使用 lambda 表达式进行过滤并放入 HashSet 以返回最高时间值。 例如,输入:
"secrets": [
    {
      "sender": 1,
      "receiver": 2,
      "time": 2000,
      "val": "This is Val1"
    },
    {
      "sender": 2,
      "receiver": 1,
      "time": 2100,
      "val": "This is Val2"
    },
    {
      "sender": 1,
      "receiver": 2,
      "time": 1500,
      "val": "This is Val3"
    },
    {
      "sender": 1,
      "receiver": 3,
      "time": 2500,
      "val": "This is Val4"
    }
    ]

输出:

"outcome": [
    {
      "sender": 2,
      "receiver": 1,
      "time": 2100,
      "val": "This is Val2"
    },
    {
      "sender": 1,
      "receiver": 3,
      "time": 2500,
      "val": "This is Val4"
    }
]

我在下面尝试过,但没有按预期工作:

int senderId = 1;
for(int i=0; i<receivers; i++)
{
var senderSecrets = secrets.Where(x => (x.sender == senderId) && (x.receiver == receivers[i])).ToArray();
var receiverSecrets = secrets.Where(x => (x.sender == receivers[i]) && (x.receiver == senderId)).ToArray();
c# lambda hashset
© www.soinside.com 2019 - 2024. All rights reserved.