Lambda表达式获取单个列的数据,其中值为“In”

时间:2012-06-30 20:56:27

标签: c# lambda

我有一个带有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列数据。

2 个答案:

答案 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.