2011-04-27 28 views
0

我想寫一個有同時接受List<T>DataRowCollection的價值,既是可轉位和numberable參數的方法,但我不知道該怎麼做。是否有可用的類和接口?什麼類型的參數同時接受List和DataRowCollection,並且都是可索引和可​​編號的?

感謝& BR - 馬蒂

+1

通過'List'你的意思'名單'? – Richard 2011-04-27 10:46:10

+0

看一看到'Object',這是一個放之四海而皆準的所有參數:http://msdn.microsoft.com/en-us/library/system.object.aspx – Bazzz 2011-04-27 11:06:30

+0

@richard:是的名單。 @Bazz:真實的,但不漂亮的解決方案 – 2011-04-27 12:52:32

回答

0

兩個List<T>DataRowCollection實施IEnumerableICollection,所以你可以使用任何根據什麼方法需要做。

+0

但不幸的是有沒有像IIndexable接口... – digEmAll 2011-04-27 10:52:53

+0

@digEmAll:沒有'在BCL IIndexable'接口。這兩個通用接口都沒有'Item'屬性來提供索引訪問。可以使用'Enumerable.ElementAt'來做到這一點(如果沒有'IList '實現,則在O(n)時間內)。最終可能需要超載,但這個問題太模糊,無法進一步提供幫助。 – Richard 2011-04-27 10:58:49

+0

是的,也許使用過載可能是正確的解決方案 – digEmAll 2011-04-27 12:18:46

2

不能指定類型約束像where T : []並有一個索引屬性沒有通用接口。 ListDataRowCollection都是IEnumerableICollection,但我認爲不會獲得你多少。所以不,不可能指定類似「一個類型需要是可索引集合」。

更新:我剛纔看到DataRowCollectionList屬性,該屬性返回集合作爲ArrayList這是一個IList。因此,假如你想要寫,你可以瞄準它的擴展方法IList

更新2:另一種選擇:您可以指定IEnumerable和使用Linq ElementAt()。不知道它是否會使用DataRowCollection的索引屬性。

+0

謝謝。更新2是解決方案。無需索引。 – 2011-04-27 12:51:08

+0

除了它不工作我getError \t 10參數1:無法從'System.Data.DataRowCollection'轉換爲'System.Collections.Generic.IEnumerable 2011-04-27 14:37:42

+1

@matti:使用擴展方法'Enumerable。 Cast '將IEnumerable轉換爲IEnumerable 。 – Richard 2011-04-27 16:02:12

相關問題