だから私は自分のデータを反復処理し、昔ながらの方法で興味のあるものを見つけるという暗黒時代に生きてきましたが、このプロジェクトでは物事をよりエレガントにし、使用できることがわかっているLINQを使用する必要があると考えましたが、物事は完全にクリックしていません。
したがって、2 つの単純な ObservableCollections があり、そのうちの 1 つから現在選択されている他のアイテムと一致するすべてのデータを取得したいと考えています。オブジェクトは非常にシンプルです...
public class foo
{
//....
public string barID{ get; set; }
//....
}
public class bar
{
public string ID { get; set; }
//....
}
私のコードでは、選択した foo があり、一致する barID を持つすべてのバーのコレクションを作成したいと考えています...
ObservableCollection<bar> bars =
from data in fooCollection
where data.barID == barCollection.SelectedItem.ID
select data;
オンラインで見つけたLINQの構文に基づいてこれを試しましたが、IEnumerableをObservableCollectionに暗黙的にキャストできないというコンパイルエラーがスローされます。だから私は試しました...
ObservableCollection<bar> bars =
(ObservableCollection<bar>)
(from data in fooCollection
where data.barID == barCollection.SelectedItem.ID
select data);
これはコンパイルされますが、実行時エラーがスローされます...
Unable to cast object of type
'WhereEnumerableIterator`1[TestProj.bar]' to type
'System.Collections.ObjectModel.ObservableCollection`1[TestProj.bar]'.
したがって、事後にオブジェクトをキャストするか、何か他のことを行うことができると確信していますが、できるだけエレガントなソリューションを探していたので、この単純な LINQ ステートメントをまとめて少し助けていただければ幸いです。また、舞台裏で何が起こっているのかを簡単に説明すると、LINQ の基本を理解するのに非常に役立ちます。