DataTable Linq在C#中有两个连接语句

时间:2014-07-27 14:26:11

标签: c# linq join datatable

我的代码:

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

我知道上面的代码只返回一个十进制类型的值(也许是double)。但是,结果属于Enumerable类型,我无法轻易编写Result + 2。我需要转换它的属性。我可以通过以下代码完成:

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

有更有效的方法来实现它吗?

此致

3 个答案:

答案 0 :(得分:2)

  

我知道上面的代码只返回一个十进制值

的值

然后使用First的{​​{1}}方法实例。

答案 1 :(得分:2)

在编译时,不知道您的查询是返回1条记录还是超过1条记录。因此,它假定了它们的列表。

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

答案 2 :(得分:1)

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

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

if (Result == null)
    return; // or error message

这也将保留返回值的类型 (键入我的头顶,可能需要稍作修改!)