C# 使用lambda选择从DataTable返回的前1行
我有一个名为currencyAmounts的数据表,使用lambda,我的表达式可以正常工作,直到返回不止一种可能性。我正在数据表中搜索与“value”变量匹配的数据。如何更改以下表达式以仅选择返回的第一行: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); 运行此操作时,我遇到以下错误: 序列包含多个匹配元素 错误消息实际上解释
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。非常感谢。