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