LINQ to Objectsでは、述語を使用してコレクションのサブセットを簡単にフィルタリングできます。ドメインクラスがPerson
でコレクションがpersons
、述語がFunc<Person, bool> filter
の場合、persons.Where(filter).ToArray()
のようになります。ドメインクラスの述語を使用して検索
人のコレクションと同様の機能をXElement
としてシリアライズ:
xPersons
は人の要素( 『人』という名前のそれぞれ)を含むルート要素である
XElement[] xFiltered = xPersons.Elements("Person")
.Where(xFilter)
.ToArray();
、Func<XElement, bool> xFilter
としてXElement
上で定義された述語引数の型。
Where
ステートメントをXMLのLINQに作成すると、Func<XElement, bool>
の代わりにFunc<Person, bool>
という型の述語を引数にとりますか?これを行うには、Func<Person, bool>
をFunc<XElement, bool>
に変換するコンバータを実装する必要がありますが、これは直感的でエラーが発生しやすい方法です。そのような種類の純正コンバータを(例えば、検査に基づいて)構想することができるか?それとも単に存在するのだろうか?
私たちはどのように知っていませんXElementから 'Person'を作成してください。いったん取得すれば残りは簡単です。 –