c# - C# 中的 Linq 语句,带有 Any() 的多个过滤器
问题描述
我有一个带有 LINQ 语句的片段,需要对下面的问题语句进行修改。
var orders = ordersets.Where(OrderSetIsOk).ToList();
var orderOther = ordersets.Except(orders).ToList();
private bool OrderSetIsOk(OrderSet value)
{
bool result = false;
var privateorders = user.privateorders;
result = privateorders.Any(a => a.strHead == value.Code ||
(a.10Code == value.10Code) ||
(value.Complaint != null &&
a.strHead == value.Complaint.9Code));
return result;
}
我有这样的示例订单集:
A : value.10code = "B6"; value.Code = ""
B : value.10code = "G6"; value.code = ""
c : value.10code = "G6"; value.code = "189"
问题:当 a.strHead 为 "" 且 value.code = "189" 且 value.10code = "G6" 时。B 和 C 应该返回 true,但 A 应该返回 false。我需要更改 Any 语句,以便 A 返回 false,但 B 和 C 返回 true。有任何想法吗?
解决方案
最好在代码到达Any
. 我建议您删除大多数空值并仅保留特定的“G6”需求,例如
privateorders.Where(ord => !string.IsNullOrEmtpy(ord.Code) || ord.10code = "G6")
.Any( …_)
因此,它们已被排除在考虑之外。根据需要制定Where
逻辑。
推荐阅读
- flutter - 查找列表的中位数
在飞镖 - python - 控制在终端中打印 pandas 数据框时显示的行数和列数
- php - 使用未定义的常量 ABSPATH
- apache-kafka - 如何使用 Apache Nifi 发布和使用来自 RDBMS 的数千个表的更改
- content-security-policy - 什么是 CSP 阻止的 URI "c" 和 "file"
- java - 所有表情符号在java中具有相同的值
- .htaccess - 重定向在 Apache 上不起作用:htm 以 php 处理
- node.js - 如何在不删除整个对象且不留下空数组的情况下从对象数组中删除 id 和 name
- python - 将值作为列表的两个列表放入字典中
- cudf - 如何将 cudf.core.dataframe.DataFrame 转换为 pandas.DataFrame?