我试图使用LINQ迭代一个IEnumerable对象,并将每个对象的某个属性拉出到该属性类型的IEnumerable中.
我目前正在使用SelectMany LINQ表达式,但不是返回IEnumerable<string>我想要的(因为属性是一个字符串),它返回一个IEnumerable<char>
var propertyValues = objectCollection.SelectMany(o => o.Value);
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
如果它正在返回IEnumerable<char>那么那就是它.猜测你想要使用Select()而不是SelectMany(),我猜它会把一堆字符串弄平IEnumerable<char>.如果您可以发布更多代码,以显示objectCollection我们可以提供更多帮助的内容.
编辑
更多代码来说明我的观点
List<string> stringList = new List<string>();
stringList.Add("string1");
stringList.Add("string2");
IEnumerable<char> chars = stringList.SelectMany(x => x);
Run Code Online (Sandbox Code Playgroud)
你想要Select而不是SelectMany.SelectMany将使一系列序列变平.您基本上是投射到一系列字符串 - 字符串是一系列字符,因此Selectmany将字符串序列展平为单个字符序列.
尝试:
var propertyValues = objectCollection.Select(o => o.Value);
Run Code Online (Sandbox Code Playgroud)