簡體   English   中英

將SelectedItems轉換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM