我有一个包含 3 列(A、B、C)的 SQL 表“tablex”。
以下 lambda 表达式返回 10 行。
var versions = versionRepository.GetVersions(a.id)
10个结果的B列存储数据为:1,2,3,4,5,6,7,8,9,10
有人可以帮助我使用 lambda 表达式仅获得 C 列的结果,其中 b 在 (2,3,4) 中。
所以我应该只得到 3 行 C 列数据。
使用Where
扩展方法过滤数据,Select
扩展方法只获取C
属性:
var versions =
versionRepository.GetVersions(a.id)
.Where(v => v.B >= 2 && v.B <= 4)
.Select(v => v.C);
(该部分v => v.C
是 lambda 表达式的示例。)
您可以使用Contains
它来检查它是否与您要查找的数字之一匹配:
List<int> ids = new List<int> { 2, 3, 4, 10 };
var versions =
versionRepository.GetVersions(a.id)
.Where(v => ids.Contains(v.B))
.Select(v => v.C);
这里的技巧是将其反转,而不是检查 B 是否是所需的数字之一,只需检查数字列表是否包含 B。