4

我有一个表格(从 SQL 数据库中检索的数据),格式如下:

╔═══════╦══════════════╗
║ Model ║ Manufacturer ║
╠═══════╬══════════════╣
║ A     ║            1 ║
║----------------------║
║ A     ║            2 ║
║----------------------║
║ A     ║            3 ║
║----------------------║
║ B     ║            4 ║
║----------------------║
║ B     ║            5 ║
║----------------------║
║ C     ║            6 ║
║----------------------║
║ D     ║            7 ║
║----------------------║
║ D     ║            8 ║
║----------------------║
║ D     ║            9 ║
║----------------------║
║ D     ║           10 ║
╚═══════╩══════════════╝

当我将数据绑定<tr><asp:datagrid>. 不过,我需要的是:

╔═══════╦══════════════╗
║ Model ║ Manufacturer ║
╠═══════╬══════════════╣
║ A     ║            1 ║
║       ║            2 ║
║       ║            3 ║
║----------------------║
║ B     ║            4 ║
║       ║            5 ║
║----------------------║
║ C     ║            6 ║
║----------------------║
║ D     ║            7 ║
║       ║            8 ║
║       ║            9 ║
║       ║           10 ║
╚═══════╩══════════════╝

我花了很多时间搜索并尝试了许多不同的东西,其中大部分使用 LINQ。但是我对LINQ的了解和了解很少。我认为(但我可能完全错了),我最接近的来自这个问题/答案:Linq query to combine cell results? . 我稍作修改的版本是:

Dim results = table.AsEnumerable().GroupBy(Function(x) x.Field(Of String)("Model")).[Select](Function(grouping) New With {
        .Key = grouping.Key,
        .CombinedModel = grouping.Aggregate(Function(a, b) a + " " + b)
    }).[Select](Function(x) New ModelRecord() With {
        .Manufacturer = x.Key.Manufacturer,
        .Model = x.CombinedModel
    })

但是由于我缺乏 LINQ 知识,我不理解“定义一个具体的类型来表示”(这在我的代码Row中产生了问题)。ModelRecord()

在这一点上,我几乎完全迷失了。我是不是把事情复杂化了?完全错了吗?在这里的任何帮助将不胜感激。

4

2 回答 2

1

我在对您的问题的评论中提到的这个解决方案有效。感谢您试一试。

于 2013-06-04T00:06:48.567 回答
1

而不是使用 DataGrid 或 GridView,我相信这更适合 Repeater,您可以更好地控制数据的格式。然后,您可以将数据加载到带有制造商列表 ( Dictionary<Model, List<Manufacturer>>) 的模型字典中。加载对象后,您确定如何在中继器中显示它。

于 2013-06-03T21:41:13.283 回答