サブリストのプロパティのリストをlinqでフィルタリングしようとしましたが、正しく作成できません。 例えば、私はこれらのクラスC#Linqとサブサブリストのプロパティのフィルタ
public class MyClass1
{
public int Id { get; set; }
public List<MyClass2> MyClasses2 { get; private set; }
}
public class MyClass2
{
public int Id { get; set; }
public List<MyClass3> MyClasses3 { get; private set; }
/* EDIT */
public virtual void RemoveClass3(MyClass3 elementToRemove) { ... }
}
public List<myClass2> myList2_1;
public List<myClass2> myList2_2;
public class MyClass3
{
public int Id { get; set; }
public Boolean Property1 { get; set; }
}
public List<myClass3> myList3_1;
public List<myClass3> myList3_2;
public List<myClass3> myList3_3;
とデータ用があります。
myClass3 3A = new myClass3 { Id=1, Property1=true};
myClass3 3B = new myClass3 { Id=2, Property1=false};
myClass3 3C = new myClass3 { Id=3, Property1=false};
myClass3 3D = new myClass3 { Id=4, Property1=false};
myList3_1.AddRange(new []{ 3A, 3B });
myList3_2.AddRange(new []{ 3C });
myList3_3.AddRange(new []{ 3D });
myClass2 2A = new myClass2 { Id=1, MyClasses3=myList3_1};
myClass2 2B = new myClass2 { Id=2, MyClasses3=myList3_2};
myClass2 2C = new myClass2 { Id=3, MyClasses3=myList3_3};
myList2_1.AddRange(new []{ 2A, 2B });
myList2_2.AddRange(new []{ 2C });
し、最終的に
myClass1 1A = new MyClass1 { Id=1, MyClasses2=myList2_1 };
myClass1 1B = new MyClass1 { Id=2, MyClasses2=myList2_2 };
public List<MyClass1> list;
list.AddRange(new []{ 1A, 1B });
我々はこのように印刷するには、リストを取得:
1-1-1-true
1-1-2-false
1-2-3-false
2-3-4-false
次に、これでProperty1のリストをフィルタリングしたいと思います。 例えば、真のプロパティ1の私のフィルタリングされたリストには、そのようにする必要があります:
filtered_list = 1-1-1-true
私は他の私は多くを説明しようとすることができ、私は十分に明確だ願っています。
そして、私の問題:フィルタリングされたリストを取得するためにリストにLinqクエリを適用したいと思います。そして、私はAnyを試しました... ...私はフィルタリングされたサブリストを持つリストを取得できませんでした。
私を助けて、私は私のリストをフィルタリングするためのLINQを使用する方法を教えてくれとサブリストEDITため
ありがとう:私はそれは不可能だった見たか、ほぼ1つのステップでLINQでそれを作るために。 は、だから私はDTBの助けを借り、3つの段階で別の溶液で、考える: - であり、フィルタMyClass1 - MyClasses3リスト 中に少なくとも1の要素がある場合、フィルタMyClass2 - すべてすべてのMyClass2要素 のMyClass3リストをフィルタリングMyClasses2のリストで少なくとも1つの要素
私は3番目のステップを実行することができますが、最初は2番目のステップではありません。もう一度手伝ってもらえますか?
私は最初のステップのために支援するための方法RemoveClass3(私はMyClass2宣言に入れて)
感謝!私は明日早くそれを試し、結果を教えてくれるでしょう。ありがとう! – Remi
私は試してみましたが、うまくいっていません:リストはよくフィルタリングされていますが、MyClasses2とMyClasses3はフィルタリングされていません。私の例では、最初の行ではなく3行の最初の行が得られます。しかし、私があなたの目的をよりよく見ているとき、私は理由を理解していると信じています:Any()はフィルターをかけません。それで、それはすべての要素(良いものと悪いもの)をもたらします。 –
Remi
実際、少し複雑です。3つのクラスがあり、クラスごとに1つの列のテーブルを印刷します(IDと名前が印刷されます)。だから、私は1-2-3-4のように印刷する必要はありません。もっと明確に提示するだけでした。しかしそれはありません:) – Remi