我使用 Linq 从 4 个级联下拉菜单中返回 ID。
用户可能已经从 1 个或所有菜单中选择了 1 个或多个值。然后从用户的选择中查询代表 ID 的 DataTable 的文本列。
如果用户从第 4 个(也是最低级别)下拉列表中进行选择,那么他们会从上述所有下拉列表中进行选择。
如果用户从菜单 1 中选择“X”,从菜单 2 中选择“Y”,而在其他人中没有任何内容,我希望results1
在 [Col_1] 中存在“X”的 10 行中看到,然后会向下查询说results2
[Col_2] 中存在“Y”的5 行。
编辑 代码(基本形式)
var results1 =
from a in dt.AsEnumerable()
where stringArray1.Contains([Col1])
select a;
var results2 =
from a in results1
where stringArray2.Contains([Col2])
select a;
var results3 =
from a in results2
where stringArray3.Contains([Col3])
select a;
var results4 =
from a in results3
where stringArray4.Contains([Col4])
select a;
var results = results4 ?? results3 ?? results2 ?? results1;
results4
取决于results3
、results3
onresults2
和results2
on的结果results1
。
可能results4 - 2
是空的,因此我想知道是否可以将它们合并为最终变量,例如:
var results = results4 ?? results3 ?? results2 ?? results1;
这是抛出错误:
Operator '??' cannot be applied to operands of type 'System.Collections.Generic.IEnumerable<AnonymousType#4>'
有没有人有任何狡猾的想法如何解决这个问题?我尽量不写冗长的代码,处理所有可能的结果。
提前谢谢大家(希望这个问题是有道理的!)
厘米