假设我在objectX上有属性num1,num2,num3.我想获取objectX列表并创建一个使用num1,num2,num3值填充的整数列表.
这是使用System.Drawing.Point的示例:
Point p1 = new Point(1,2);
Point p2 = new Point(3,4);
var points = new[] { p1, p2 };
var combined = points.SelectMany(a => new[] {a.X, a.Y});
Run Code Online (Sandbox Code Playgroud)
这是最可读的方式吗?语法对我来说有点烦躁.你能用LINQ Query表达式吗?
在此示例中使用LBushkin的查询表达式的FYI如下所示:
var combined = from p in points
let values = new[] {p.X, p.Y}
from x in values
select x;
Run Code Online (Sandbox Code Playgroud)
我会给读者留下一个练习,以决定哪个更具可读性.
我认为最干净的是如果ObjectX有一个属性来组合你的num属性,让我们称之为Numbers:
public IEnumerable<int> Numbers
{
get
{
yield return Num1;
yield return Num2;
yield return Num3;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,只要你有一个Objectc的acecss,你就可以轻松查询它的数字属性,允许你这样做:
var combined = objectXs.SelectMany(a => a.Numbers);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2189 次 |
| 最近记录: |