オブジェクトへの LINQ は私の親友です。変換を行うために ConvertAll 拡張メソッドを頻繁に使用しています。
ただし、 Select 拡張メソッドを使用して同じことを実現できることに気付きました。
たとえば、Alarm オブジェクトのリストを表示する ListView があります。オブジェクト自体を ListView 要素の Tag プロパティに格納します。次に、この方法で選択を取得します。
ConvertAll を含むバージョン:
public Alarm[] SelectedTags
{
get
{
return AlarmListView
.SelectedItems
.OfType<ListViewItem>()
.ToList().ConvertAll(i => i.Tag as Alarm)
.ToArray();
}
}
選択のあるバージョン:
public Alarm[] SelectedTags
{
get
{
return AlarmListView
.SelectedItems
.OfType<ListViewItem>()
.Select(i => i.Tag as Alarm)
.ToArray();
}
}
個人的にSelect
は、コレクションを に入れなくても簡単に変換できるので、好きList
ですConvertAll
。とにかく、どちらも確かに存在する正当な理由があります。
どちらが優れていますか?どのシナリオで?