[英]Extension method on ObservableCollection<MyType>, MyType : IEnumerable<MyType>
[英]Converting SelectedItems to IEnumerable<MyType>
我正在使用GridView,其中SelectionMode設置為Multiple。 我選擇了一些項目,然后在我的按鈕單擊事件上,我要處理那些選定的項目。
我可以使用GridView.SelectedItems屬性獲取這些項目的集合,並將其視為通用列表。 我希望能夠將其視為該列表中基礎對象類型的列表。
我可以驗證列表中的所有項目的類型正確:
if(items.Any(item => !(item is MyType))) throw new ArgumentException("Invalid list of items");
但是我無法做的是將該列表視為對象列表以外的任何東西。 例如:
items is IList<object> = true
items is IEnumerable<object> = true;
然而
items is IList<MyType> = false
items is IEnumerable<MyType> = false
這樣像return (items as List<MyType>)
失敗
缺少枚舉列表並創建MyType
類型的新列表的問題我很MyType
。
var myItems = new List<MyItem>(items.Count);
foreach (var item in items)
{
myItems.Add(item as MyItem);
}
有小費嗎?
嘗試
items.Cast<MyType>()
list.Cast<MyType>()
將引發異常 list.OfType<MyType>()
將按給定類型過濾 也:
list.Count() != list.OfType<MyType>()
如果不實現IList
,則將序列兩次迭代,即它是純枚舉器,而不是List或Array
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.