2
對象的LINQ是我最好的朋友。我經常使用ConvertAll擴展方法來實現轉換。如何選擇使用LINQ轉換和選擇對象?
但是我意識到我可以通過使用Select擴展方法實現相同。
例如,我有一個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
。無論如何,兩者都有充分的理由存在。
一個比另一個更好嗎?在哪些場景中?
我意識到現在我錯誤地認爲ConvertAll是LINQ to Object的一部分。非常感謝您的澄清。 – Larry