Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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选择从DataTable返回的前1行_C#_Linq_Lambda_Datatable_Datarow - Fatal编程技术网

C# 使用lambda选择从DataTable返回的前1行

C# 使用lambda选择从DataTable返回的前1行,c#,linq,lambda,datatable,datarow,C#,Linq,Lambda,Datatable,Datarow,我有一个名为currencyAmounts的数据表,使用lambda,我的表达式可以正常工作,直到返回不止一种可能性。我正在数据表中搜索与“value”变量匹配的数据。如何更改以下表达式以仅选择返回的第一行: DataRow resultRow = currencyAmounts.AsEnumerable().Single(r => ((decimal)r["OriginalAmount"]) == value); 运行此操作时,我遇到以下错误: 序列包含多个匹配元素 错误消息实际上解释

我有一个名为currencyAmounts的数据表,使用lambda,我的表达式可以正常工作,直到返回不止一种可能性。我正在数据表中搜索与“value”变量匹配的数据。如何更改以下表达式以仅选择返回的第一行:

DataRow resultRow = currencyAmounts.AsEnumerable().Single(r => ((decimal)r["OriginalAmount"]) == value);
运行此操作时,我遇到以下错误:

序列包含多个匹配元素


错误消息实际上解释了这一切。当条件中有多个匹配元素(或没有元素)时,Single()引发异常。您应该使用
First()
FirstOrDefault()


错误消息实际上解释了这一切。当条件中有多个匹配元素(或没有元素)时,Single()引发异常。您应该使用
First()
FirstOrDefault()


您需要
First
而不是
Single

您需要
First
而不是
Single

您可以将“Single()”更改为“First()”

这是因为single(从microsoft页面)“返回序列中的唯一元素,如果序列中没有一个元素,则抛出异常。”

您可以使用“First()”更改“single()”


这是因为single(从microsoft页面)“返回序列中的唯一元素,如果序列中没有一个元素,则引发异常。”

如果集合中的元素多于或少于1个,single将引发错误

如果您想要第一个结果,并且确保始终至少有一个结果,请使用

.Single();
.SingleOrDefault();
如果您不确定始终至少有一个结果,请使用

.Single();
.SingleOrDefault();

如果集合中的元素多于或少于1个,Single将抛出错误

如果您想要第一个结果,并且确保始终至少有一个结果,请使用

.Single();
.SingleOrDefault();
如果您不确定始终至少有一个结果,请使用

.Single();
.SingleOrDefault();

错误消息实际上解释了这一切。当条件中有多个匹配元素(或没有元素)时,Single()抛出异常。使用
Single()
表示结果集应包含1个元素。如果您想从序列中获取第一个,请使用
FirstOrDefault()
。这正是我想要的,Barry。谢谢。错误消息实际上解释了这一切。当条件中有多个匹配元素(或没有元素)时,Single()抛出异常。使用
Single()
表示结果集应包含1个元素。如果您想从序列中获取第一个,请使用
FirstOrDefault()
。这正是我想要的,Barry。非常感谢。