如何通过Linq C#获取每个数组的第一个元素#

时间:2018-02-23 08:37:22

标签: c# arrays list linq

我对Linq很新,并且对此代码有疑问:

double[] values;
private List<double[]> valueList = new List<double[]>();
void AddNewValues(double d1, double d2, double d3)
{
   values[0] = d1;
   values[1] = d1;
   values[2] = d1;
   valueList.Add(values);
}

void GetAllFirstValues()
{
   var test = valueList.Where(s => s == typeof(double[0]));
}

如何获取列表中每个数组的第一项?

这甚至可能吗? Linq这是一个正确的方法,还是有更聪明的解决方案?

1 个答案:

答案 0 :(得分:8)

这应该是System.Linq,您无需检查类型。它将选择first或default如果array为空并返回它。

IEnumerable<double> d =  l.Select(array => array.FirstOrDefault())

或者,如果您只想过滤非空数组

IEnumerable<double> d = l.Where(array => array.Any()).Select(array => array.First());

请注意,数组也可以是null,因此您甚至可以在Where子句中对其进行过滤。