2

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

4

2 回答 2

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 表达式的示例。)

于 2012-06-30T21:02:45.350 回答
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。

于 2012-06-30T21:17:16.470 回答