假设我们有一个由Line
和Point 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/