如何在C#中将System.Collection.IEnumerable转换为List<T>?

9

如何在C#中将System.Collection.IEnumerable转换为列表?

实际上,我正在执行一个存储过程,该存储过程以System.Collection.IEnumerable 的形式返回结果集,我想将该结果集转换为C# List<User>

请注意,我不想使用任何循环。有没有一种强制类型转换的方法!


2
ToList() 无法做什么? - Lei Yang
1
@CircleHsiao 这不是重复的。请注意作者要求这里的类型为IEnumerable而不是IEnumerable<T>。 - Sebi
1
@CircleHsiao 这不是重复的问题,因为你的问题提到了IEnumerable<T>,但作者的意思是IEnumerable。 - Sebi
2个回答

23

你可以使用以下内容:

IEnumerable myEnumerable = GetUser();
List<User> myList = myEnumerable.Cast<User>().ToList();

正如Lasse V. Karlsen在评论中建议的那样,您可以使用OfType<User>();而不是Cast<User>

如果您的IEnumerable默认是泛型的,我认为这不是因为您提出的命名空间:System.Collection.IEnumerable,您可以轻松地使用:

IEnumerable<User> myEnumerable = GetUser();
List<User> myList = myEnumerable.ToList();

或者他可以使用OfType。 - Lasse V. Karlsen
@LasseV.Karlsen 谢谢您的建议,我已经更新了我的答案。 - Sebi

0
你可以直接使用Linq的ToList()方法。
List<string> collection = myEnumCollection.ToList();

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Sebi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接