我有一个带有3列(A,B,C)的SQL表“tablex”。
以下lambada表达式返回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列数据。
答案 0 :(得分:15)
使用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表达式的一个例子。)
答案 1 :(得分:2)
您可以使用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.