我在编写 C# linq 查询以根据过滤器列表的多列从数据库中检索数据时遇到问题。
项目列表包含多列(例如 A 和 B)并且是动态的。我的第一个想法是在 where 语句中写一个 any 语句,但这在 EF 中是不允许的。
var result = _repository.Where(x => items.Any(y => x.A == y.A && x.B == y.B));
Run Code Online (Sandbox Code Playgroud)
我也只在 A 上尝试过过滤器,检索所有数据并在 B 上过滤,但效果不佳。
var ListA = items.Select(x => x.A).ToList();
var result = _repository.Get(x => ListA.Contains(x.A));
Run Code Online (Sandbox Code Playgroud)
另一种方法是创建一些 c# 代码来生成如下内容:
SELECT A,B,C,D
FROM Items
WHERE
(A = 1 AND b = 1) OR
(A = 7 AND b = 2) OR
(A = 4 AND b = 3)
Run Code Online (Sandbox Code Playgroud)
但是没有像样的方法来做到这一点。
有谁知道如何解决这个问题?
我想要进行 WIQL 查询来对“Bug”类型的工作项进行计数,并按标题和软件版本字段进行分组。但是,WIQL 中没有 group by 功能。有人有其他方法可以在 WIQL 中实现此功能吗?
SELECT
[System.Title],
[System.State],
count(*)
FROM workitems
WHERE
[System.WorkItemType] = 'Bug'
AND [System.State] <> ''
GROUP BY [System.Title], [Custom.ToolSoftwareVersion]
Run Code Online (Sandbox Code Playgroud)
查询用于创建仪表板和概述等。