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()
});

NewPointここで、それぞれの値item.Minとを関連付けたいと思いますitem.Max

NewPoint.Min = item.Minや など、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()して終了することができます。IEnumerable<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 に答える