用字典中的列表填充 dataGridView?
Populate dataGridView with a list inside a dictionary?
我有这样的字典:
Dictionary<string, List<string>>
像这样添加键和值后:
resultDic.Add(s, new List<string>());
foreach (DataRow row in schemaTable.Rows)
{
resultDic[s].Add(row[3].ToString());
}
然后我想显示字典中列表中的字符串值和单个值。为了实现这一点,我尝试这样做:
dataGridView2.DataSource = Controller.GetMetaDataTables2().Select(x
=> new { ColumnName = x.Key, Table = x.Value[0] }).ToList();
dataGridView2.Show();
GetMetaDataTables2 returns 像上面那样的字典。问题是索引 [0] 显然只给我第一个值,当我想显示整个列表时。我想迭代,但我不知道如何在这里进行。我才刚刚开始了解 LINQ 表达式。有什么想法吗?
感谢所有帮助!
更新:在 Markus 的帮助下修复了它。我用他的解决方案进行了一次更改。而不是 y.ToArray() 我需要简单地打印 y。像这样:
dataGridView2.DataSource = Controller.GetMetaDataTables2()
.SelectMany(x => x.Value.Select(y => new { ColumnName = x.Key, Table =
y }))
.ToArray();
dataGridView2.Show();
您可以使用SelectMany
方法来展平列表,例如:
resultDic
.SelectMany(x => x.Value.Select(y => new { ColumnName = x.Key, Table = y.ToArray() }))
.ToArray();
对于
A - "A.1", "A.2"
B - "B.1", "B.2"
C - "C.1", "C.2"
这导致
A - A.1
A - A.2
B - B.1
B - B.2
C - C.1
C - C.2
为了在GridView中显示,代码应该是
dataGridView2.DataSource = Controller.GetMetaDataTables2()
.SelectMany(x => x.Value.Select(y => new { ColumnName = x.Key, Table = y.ToArray() }))
.ToArray();
dataGridView2.Show();
我有这样的字典:
Dictionary<string, List<string>>
像这样添加键和值后:
resultDic.Add(s, new List<string>());
foreach (DataRow row in schemaTable.Rows)
{
resultDic[s].Add(row[3].ToString());
}
然后我想显示字典中列表中的字符串值和单个值。为了实现这一点,我尝试这样做:
dataGridView2.DataSource = Controller.GetMetaDataTables2().Select(x
=> new { ColumnName = x.Key, Table = x.Value[0] }).ToList();
dataGridView2.Show();
GetMetaDataTables2 returns 像上面那样的字典。问题是索引 [0] 显然只给我第一个值,当我想显示整个列表时。我想迭代,但我不知道如何在这里进行。我才刚刚开始了解 LINQ 表达式。有什么想法吗?
感谢所有帮助!
更新:在 Markus 的帮助下修复了它。我用他的解决方案进行了一次更改。而不是 y.ToArray() 我需要简单地打印 y。像这样:
dataGridView2.DataSource = Controller.GetMetaDataTables2()
.SelectMany(x => x.Value.Select(y => new { ColumnName = x.Key, Table =
y }))
.ToArray();
dataGridView2.Show();
您可以使用SelectMany
方法来展平列表,例如:
resultDic
.SelectMany(x => x.Value.Select(y => new { ColumnName = x.Key, Table = y.ToArray() }))
.ToArray();
对于
A - "A.1", "A.2"
B - "B.1", "B.2"
C - "C.1", "C.2"
这导致
A - A.1
A - A.2
B - B.1
B - B.2
C - C.1
C - C.2
为了在GridView中显示,代码应该是
dataGridView2.DataSource = Controller.GetMetaDataTables2()
.SelectMany(x => x.Value.Select(y => new { ColumnName = x.Key, Table = y.ToArray() }))
.ToArray();
dataGridView2.Show();