我对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
这是一个正确的方法,还是有更聪明的解决方案?
答案 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
子句中对其进行过滤。