c#中带有两个连接语句的数据表Linq



我的代码:

var Result = from TempRow in ArrAbsDiff
             where TempRow.Strike == StrikeOfMinAbsDiff
             select TempRow.PutMidPrice;

我知道上面的代码只返回一个decimal类型的值(可能是double类型)。但是,Result的类型是Enumerable,我不能很容易地写出Result + 2。我需要转换它的属性。我可以通过以下代码来实现:

var Result = (from TempRow in ArrAbsDiff
             where TempRow.Strike == StrikeOfMinAbsDiff
             select TempRow.PutMidPrice).Min();

有更有效的方法来完成它吗?

认为,

我知道上面的代码只返回一个decimal类型的值

First法代替Min

在编译时,您的查询是否返回1条记录或多个记录是未知的。因此,它假设它们的一个列表。

我不知道它们之间是否有性能差异,我通常使用. single()来获取单个记录。更明显的是,我想要一个记录,而不是,例如,最小的一个。

尝试使用FirstOrDefault()"这将选择返回的第一个结果(因为您知道只会返回一个值)。如果没有返回值,结果将为空,在if语句中捕获,如下所示:

var Result = (from TempRow in ArrAbsDiff
             where TempRow.Strike == StrikeOfMinAbsDiff
             select TempRow.PutMidPrice).FirstOrDefault();
if (Result == null)
    return; // or error message

也将保留返回值的类型(这是我的头,可能需要稍微改变!)

最新更新