【发布时间】:2011-12-09 22:18:31
【问题描述】:
我有一个 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 查询以定位 status.count == 0 的测试用例和升级?
【问题讨论】:
-
tc是否总是拥有Status?第一个版本生成的 SQL 是什么样的? -
@John Skeet - tc.Status 是状态项的集合。该集合中可能有 0 个项目。 task.Upgrade.Status 同样是状态项的集合。我需要一些时间来研究如何回答您的第二个问题,我会尽快回复您。
标签: c# .net mysql linq entity-framework