复合linq查询
本文关键字:查询 linq 复合 | 更新日期: 2023-09-27 18:17:16
我有一个Visual Studio 2008 c# . Net 3.5项目,在Windows 7 x64上使用MySql 5.1.53和MySql Connector/Net 6.4.4。
在我的应用程序中,我正在寻找没有升级或测试用例状态的项目,所以我查询我的数据库为:
var task_query = from task in task_list_.TaskSet
from tc in task.TestCases
where
(task.Upgrade != null && task.Upgrade.Status.Count == 0) ||
tc.Status.Count == 0
orderby task.Order
select task;
但是,它从不返回任何项。但是,如果我将查询限制为只有升级和如下查询:
var task_query = from task in task_list_.TaskSet
where
(task.Upgrade != null && task.Upgrade.Status.Count == 0)
orderby task.Order
select task;
我发现没有状态的升级。同样,这个查询:
var task_query = from task in task_list_.TaskSet
from tc in task.TestCases
where
tc.Status.Count == 0
orderby task.Order
select task;
将成功地找到没有状态的测试用例。
我需要如何改革我的原始linq查询来定位测试用例和升级的状态。Count == 0?
取两个独立的查询,并使用union将它们组合在一起。
var task_query = from task in task_list_.TaskSet
where
(task.Upgrade != null && task.Upgrade.Status.Count == 0) ||
task.TestCases.Any(tc => tc.Status.Count == 0)
orderby task.Order
select task;