Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Lambda表达式,用于获取单个列的数据,其中的值为;在;_C#_Lambda - Fatal编程技术网

C# Lambda表达式,用于获取单个列的数据,其中的值为;在;

C# Lambda表达式,用于获取单个列的数据,其中的值为;在;,c#,lambda,C#,Lambda,我有一个SQL表“tablex”,有3列(a、B、C) 下面的lambada表达式返回10行 var versions = versionRepository.GetVersions(a.id) 10个结果中的B列将数据存储为:1,2,3,4,5,6,7,8,9,10 有人能帮我使用lambda表达式,只得到(2,3,4)中b的C列的结果吗 因此,我应该只获取3行C列数据。使用Where扩展方法过滤数据,使用选择扩展方法仅获取C属性: var versions = versionRepos

我有一个SQL表“tablex”,有3列(a、B、C)

下面的lambada表达式返回10行

var versions = versionRepository.GetVersions(a.id)
10个结果中的B列将数据存储为:1,2,3,4,5,6,7,8,9,10

有人能帮我使用lambda表达式,只得到(2,3,4)中b的C列的结果吗


因此,我应该只获取3行C列数据。

使用
Where
扩展方法过滤数据,使用
选择
扩展方法仅获取
C
属性:

var versions =
  versionRepository.GetVersions(a.id)
  .Where(v => v.B >= 2 && v.B <= 4)
  .Select(v => v.C);
var版本=
versionRepository.GetVersions(a.id)
其中(v=>v.B>=2和v.B 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);
List id=新列表{2,3,4,10};
变量版本=
versionRepository.GetVersions(a.id)
其中(v=>ids.Contains(v.B))
.选择(v=>v.C);

这里的诀窍是将其颠倒过来,而不是检查B是否是所需的数字之一,只需检查数字列表是否包含B。

您确定该列名为
A.id
,其中有一个点吗?如果是这样的话,这是一个非常令人困惑的名字。你真的不清楚你的意思是什么——特别是像“C列的结果,其中b在2,3,4中”。你对B栏还是C栏感兴趣?您可以按整行过滤,而不是按列过滤。样本数据和预期的输入/输出将有所帮助。还要注意的是,它是一个lambda表达式,而不是lambda。lambda表达式是在鲜为人知的Visual Studio舞蹈版本中使用的。你也许可以在当地的投币商场找到它……lambda是当你得到一个lambda表达式时你所跳的舞蹈;-)这里有一个小的介绍,解释了这个术语的来源,以及它是如何与编程相关的——谢谢。我刚刚意识到我还需要b栏的10个。我如何修改上述内容以同时选择b=10的位置。或者我想问的是,如何从(2,3,4,10)@user1204195中的B列中选择值:只需将其添加到条件:
。其中(v=>(v.B>=2&&v.B@user1204195:是否包含
Select
调用?是的,我已包含Select调用。@user1204195:如果包含,则结果仅包含
C
属性中的值。