假设我们有一个由LinePoint startPoint定义的Point endPoint类。

如果我有这些行的列表,如何使用LINQ将它们中的所有点提取到一个List<Point>中。

这是我到目前为止的内容:

IList<Point> points1 = lines.Select(o => o.StartPoint).ToList();
IList<Point> points2 = lines.Select(o => o.EndPoint).ToList();

IList<Point> points = points1.Concat(points2).ToList();

最佳答案

如果您想使用更短的方法,可以执行以下操作:

var points = lines.SelectMany(l => new[] { l.StartPoint, l.EndPoint }).ToList();


但是,您当前的代码具有更好的可读性,但更重要的是,它不会为您迭代的每个line创建一个数组。

但是,您无需为每个集合调用ToList(),只需编写即可:

var points = lines.Select(l => l.StartPoint).Concat(lines.Select(l => l.EndPoint)).ToList();

关于c# - 使用Linq选择多个属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42434988/

10-13 05:01