0

这是我的课,例如:

public class Point
{
    public string Min { get; set; }
    public string Max { get; set; }

    public Point()
    {

    }
}

我正在通过 linq to xml 构建动态对象:

var list = xDoc.Descendants("item").Select(item => new
{
    NewPoint = new Point()
});

现在,我想为每个NewPointitem.Minitem.Max.

例如NewPoint.Min = item.Minand NewPoint.Max = item.Max,没有在方法中创建具有 2 个参数的 Class 构造函数。

是否可以?希望问题很清楚...

4

3 回答 3

2

您可以使用对象初始化器:

Point = new Point() { Min = n["min"], Max = n["max"] }

(或者无论如何你得到你的价值观n

或者,您可以将整个代码块放入您的Select

.Select(n => {
    var point = new Point();
    point.Min = n["min"];
    point.Max = n["max"];
    return new { Point = point };
});

另请注意:除非您还选择其他东西,否则您不需要

n => new { Point = new Point() }

您可以只使用n => new Point()并以 aIEnumerable<Point>而不是IEnumerable<AnonymousClassContainingPoint>.

于 2012-12-06T14:04:10.580 回答
1
var list = xDoc.Descendants("item").Select(n => new
{
    Point = new Point()
    {
       Min = n.Min,
       Max = n.Max,
    }
});
于 2012-12-06T14:04:32.443 回答
0

如果您只想要一个带有Points 的列表,我会简化 linq:

var list = xDoc.Descendants("item").Select(item => 
    new Point { Min = item.Min, Max = item.Max });
于 2012-12-06T14:10:33.393 回答