1
如何編寫擴展方法轉換IQueryable<T>
和IEnumerable<T>
到ReadOnlyCollection<T>
?擴展方法轉換爲IQueryable的<T>和IEnumerable <T>到ReadOnlyCollection <T>
感謝
如何編寫擴展方法轉換IQueryable<T>
和IEnumerable<T>
到ReadOnlyCollection<T>
?擴展方法轉換爲IQueryable的<T>和IEnumerable <T>到ReadOnlyCollection <T>
感謝
public static ReadOnlyCollection<T> AsReadOnlyCollection<T>(this IEnumerable<T> source)
{
if(source == null)
throw new ArgumentNulLException("source");
IList<T> list = source as IList<T> ?? source.ToList();
return new ReadOnlyCollection<T>(list);
}
注意,有在這種情況下,「轉換」的IEnumerable<T>
(沒有這樣的事就像LINQ堆棧中的所有其他方法一樣),您將返回與以前不同的對象。
List<T>
已經包含了一個擴展方法AsReadOnly()
,所以才這樣做:
queryable.ToList().AsReadOnly()
'作爲IList的來源 ?? source.ToList();'? –
Snowbear
2011-04-02 10:48:55
哦,當然。我通常圍繞着合併操作員,因爲我不是很自然地對我(不是我不理解它)。 – Femaref 2011-04-02 10:50:03
對不起,忘記了方法體中的泛型類型參數。 – Femaref 2011-04-02 11:02:30