以防万一您想知道这是如何产生的,我正在使用实体框架的一些结果集。
我有一个对象是IEnumerable<IEnumerable<string>>
;基本上,是字符串列表的列表。
我想将所有字符串列表合并为一个大字符串列表。
在 C#.net 中执行此操作的最佳方法是什么?
使用 LINQ SelectMany 方法:
IEnumerable<IEnumerable<string>> myOuterList = // some IEnumerable<IEnumerable<string>>...
IEnumerable<String> allMyStrings = myOuterList.SelectMany(sl => sl);
要非常清楚地了解这里发生的事情(因为我讨厌人们认为这是某种巫术的想法,而且我对其他一些人删除了相同的答案感到难过):
选择多个 http://msdn.microsoft.com/en-us/library/system.linq.enumerable.selectmany.aspx is an 扩展方法 http://msdn.microsoft.com/en-us/library/bb383977.aspx(通过语法糖看起来像特定类型的实例方法的静态方法)IEnumerable<T>
。它需要原始的枚举枚举和一个将其中的每一项转换为枚举的函数。
因为物品是already枚举,转换函数很简单——只需返回输入(sl => sl
意思是“采用一个名为sl
并返回它”)。然后 SelectMany 依次提供每个列表的枚举,从而产生“扁平化”列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)