B.B*_*dan 4 c# linq transpose pivot-table
我有一个List<List<string>>
,它是从远程数据源(即WCF)返回的.因此,我需要使用LINQ将以下数据修改为用户友好的列表
C#代码是
List<List<string>> PersonInfo = new List<List<string>>()
{
new List<string>() {"John", "Peter", "Watson"},
new List<string>() {"1000", "1001", "1002"}
}
Run Code Online (Sandbox Code Playgroud)
适当的屏幕截图:现有的
我需要旋转数据,如下面的屏幕截图:建议
请帮助我如何使用LINQ C#旋转数据
Oli*_*ver 14
这是一个简单而灵活的解决方案,它将处理具有任意数量维度的多个内部列表.
List<List<string>> PersonInfo = new List<List<string>>()
{
new List<string>() {"John", "Peter", "Watson"},
new List<string>() {"1000", "1001", "1002"}
};
var result = PersonInfo
.SelectMany(inner => inner.Select((item, index) => new { item, index }))
.GroupBy(i => i.index, i => i.item)
.Select(g => g.ToList())
.ToList();
Run Code Online (Sandbox Code Playgroud)
这是一个通用的扩展方法
public static IEnumerable<IEnumerable<T>> Pivot<T>(this IEnumerable<IEnumerable<T>> source)
{
var enumerators = source.Select(e => e.GetEnumerator()).ToArray();
try
{
while (enumerators.All(e => e.MoveNext()))
{
yield return enumerators.Select(e => e.Current).ToArray();
}
}
finally
{
Array.ForEach(enumerators, e => e.Dispose());
}
}
Run Code Online (Sandbox Code Playgroud)
这样你就可以
var result = PersonInfo.Pivot();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2325 次 |
最近记录: |