Dot-Net
LINQ 可以與 IEnumerable 一起使用嗎?
我有一個實現
IEnumerable但沒有實現的類IEnumerable<T>。我不能改變這個類,也不能用另一個類來代替它。正如我從 MSDN 中了解到的,如果類實現了 LINQ,則可以使用IEnumerable<T>. 我試過使用instance.ToQueryable(),但它仍然不能啟用 LINQ 方法。我確信這個類只能包含一種類型的實例,所以該類可以實現IEnumerable<T>,但它只是沒有。那麼如何使用 LINQ 表達式查詢這個類呢?
您可以使用
Cast<T>()或OfType<T>獲取完全支持 LINQ 的 IEnumerable 的通用版本。例如。
IEnumerable objects = ...; IEnumerable<string> strings = objects.Cast<string>();或者,如果您不知道它包含什麼類型,您可以隨時執行以下操作:
IEnumerable<object> e = objects.Cast<object>();如果您的非泛型
IEnumerable包含各種類型的對象並且您只對例如感興趣。你可以做的字元串:IEnumerable<string> strings = objects.OfType<string>();