比较后的数组数据请求数据的数组数据通过lambda表达式响应数据,添加列表 &g



我正在制作一个api服务器

客户端发送如下请求数据

{
"classCode": "01",
"array": [
{
"GroupID": "Class",
"CodeID": "A",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "B",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "C",
"Value": "1"
},
{
"ClassID": "Class",
"CodeID": "D",
"Value": "1"
}
]
}

正在创建的api服务器以这种方式接收请求的数据并发送响应数据。

public List<user_model> List(Dictionary<string, object> param)
{
.. code omission

List<user_model> tempList = new List<user_model>();
List<user_model> resultList = new List<user_model>();

jsonReq.Session = param;

.. code omission
}
首先,将接收到的数据存储在templist 中。
{
"Code": "00",
"Msg": "SUCCESS",
"Data": [
{
"className": "aClass",
"array": [
{
"GroupID": "Class",
"CodeID": "A",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "B",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "C",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "D",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "E",
"Value": "1"
}
]
},
{
"className": "bClass",
"array": [
{
"GroupID": "Class",
"CodeID": "A",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "B",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "C",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "D",
"Value": "0"
},
{
"GroupID": "Class",
"CodeID": "E",
"Value": "1"
}
]
},
{
"className": "cClass",
"array": [
{
"GroupID": "Class",
"CodeID": "A",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "B",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "C",
"Value": "1"
},
{
"GroupID": "Class",
"CodeID": "D",
"Value": "0"
},
{
"GroupID": "Class",
"CodeID": "E",
"Value": "0"
}
]
}
]
}

我将过滤并只放置包含" class "的数据。返回resultList

我想用lambda表达式来表示它,但是在我编写的代码中出现了错误。

resultList .AddRange(tempList .Where(um => 
um.array[0].Value.Equals(param["array"].ToString()) && 
um.array[1].Value.Equals(param["array"].ToString())  && 
um.array[2].Value.Equals(param["array"].ToString()) && 
um.array[3].Value.Equals(param["array"].ToString())));

如何修改lambda表达式以插入所需的值?

如果不知道如何从receiveeddata生成tempList,这将很难调试-但有两个地方可以查找:

  • 将数组中的单个值与整个参数["array"]对象进行比较
  • 在tempList数组中索引4次,该数组可能只有3个值

我猜是前者——也许你想要这样的:

var arrayArray = ((IEnumerable)param["array"]).ToArray();
resultList.AddRange(tempList.Where(um => 
um.array[0].Value.Equals(arrayArray[0].ToString()) && 
um.array[1].Value.Equals(arrayArray[1].ToString()) && 
um.array[2].Value.Equals(arrayArray[2].ToString()) && 
um.array[3].Value.Equals(arrayArray[3].ToString())));