2010-11-25 13 views
0

私はソートを実行するために動的LINQを使用するオブジェクトのリストを持っています。複合オブジェクトで動的LINQを使用して並べ替え

オブジェクトは、次のように

public class SampleDTO 
    { 
     public string Vendor { get; set;} 
     public string Invoice { get; set; } 
     .. 
     .. 

} 

であり、私はこれを並べ替えるために、動的LINQのライブラリを使用し、

var list= new List<SampleDTO>(); 
list.OrderBy("Vendor"); 

私はの有効なプロパティ名のソート・キーを渡す場合、これは正常に動作しますリスト(例:ベンダー)

問題は、複雑なオブジェクトに対してこれを行う方法です。

は私がSampleDTO

public class SampleDTO 
    { 
     public string Vendor { get; set;} 
     public string Invoice { get; set; } 
     public OtherDTO OtherDTO{get;set; } 
     .. 

} 

public class OtherDTO 
{ 
     public string LineId{ get; set;} 
     .. 


} 

そして私は、私はSampleDTOの直接のプロパティから並べ替えることができるはずですように、十分な並べ替え、動的にしたい場合や財産のある別のオブジェクトを持っていると仮定しますOtherDTOのプロパティで(例えばOtherDTO.LineIdでソートする必要がある)

これを実現する方法は何か?

/BB

答えて

2

あなたはこれを行うことができます:

list.OrderBy("OtherDTO.LineId"); 
+0

ハードコードされた文字列に依存TKXされていないという利点があり、ちょうど – Illuminati

+0

をそれをテストするために時間がかかった時にはソリューションは、あなたが:-)それを見ないように明らかです – Steven

+0

実行時に上記の動的にソート列を渡す方法 – msbyuva

4

ラムダ構文を使用しない理由を。

list.OrderBy(sample => sample.OtherDto.LineId);

これは

+1

私はOPの最初の場所で動的LINQを使用する正当な理由があると思います。 – Steven

+0

列は私が並べ替える必要があるだけでorderlineIdではない、それは他の列も同様に、私は最初の場所で動的なlinqを使用している理由です。 – Illuminati

+0

@Bumble Bee:ああ、私は元の質問を誤解しました。 –

関連する問題