我在單行列中顯示多個串列時遇到問題。
這是一個代碼示例。
public class Program
{
static void Main(string[] args)
{
Dictionary<string, List<object>> keyvalues = new Dictionary<string, List<object>>();
keyvalues.Add("Code", new List<object>() { 1, 2, 3, 4 });
keyvalues.Add("Name", new List<object>() { "A", "B", "C", "D" });
keyvalues.Add("Age", new List<object>() { 20, 30, 40, 50 });
var listData = keyvalues.Select(x => x.Value).Select((x, i) => new { obj = x, index = i });
var listData = keyvalues.Select((x, iparent) => x.Value.Select((z, i) => new { value = string.Concat(z, x.Value[i]) }).ToList()).ToList();
Console.ReadLine();
}
}
預期輸出
1A20
2B30
3C40
4D50
uj5u.com熱心網友回復:
如果您使用 .Net 6,您可以使用新的 3 向 Zip 擴展。
var result = keyvalues["Code"].Zip(keyvalues["Name"], keyvalues["Age"])
.Select(x=> $"{x.First}{x.Second}{x.Third}");
uj5u.com熱心網友回復:
為什么要弄得這么復雜?
for(int x = 0; x<keyValues["Code"].Count; x )
Console.WriteLine(
keyValues["Code"][x]
keyValues["Name"][x]
keyValues["Age"][x]
);
LINQ 是一把錘子;不是每個問題都是釘子。
ps如果你有N把鑰匙,你可以很容易地把它變成一個
var keys = new[]{"Code","Name","Age","Foo","Bar"};
for(...)
foreach(var k in keys)
... //some concat here or use the values directly eg adding to your page
uj5u.com熱心網友回復:
您可以Zip在這里輕松使用。但是,您可以自己滾動
public static IEnumerable<string> DoStuff<T, T2>(Dictionary<T, List<T2>> source)
{
var max = source.Values.Max(x => x?.Count ?? 0);
for (var i = 0; i < max; i )
yield return string.Concat(source.Values.Select(x => x.ElementAtOrDefault(i)));
}
用法
var results = DoStuff(keyvalues);
Console.WriteLine(string.Join(Environment.NewLine,results));
輸出
1A20
2B30
3C40
4D50
或者
public static IEnumerable<string> DoStuff<T>(List<T>[] source)
{
var max = source.Max(x => x?.Count ?? 0);
for (var i = 0; i < max; i )
yield return string.Concat(source.Select(x => x.ElementAtOrDefault(i)));
}
...
var results = DoStuff(keyvalues.Values.ToArray());
Console.WriteLine(string.Join(Environment.NewLine,results));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/345130.html
標籤:C# asp.net asp.net-mvc
上一篇:VS2019:除錯mvc代碼以查找與按鈕單擊關聯的控制器/操作
下一篇:不使用EF的視圖的分頁
