C#Linq数据库表到列表列表

时间:2011-08-15 20:14:55

标签: c# linq

我有一个包含三个字段的数据库表,分类,名称和值(字符串,字符串,整数)。类别和名称一起是主键。我现在的目的是编写一个方法来返回该表的内容,并将其分类为

List<List<string>>

其中每个List是具有相同类别的条目列表(并且第一个字符串是类别)。我怎么能这样做,或者我是以错误的方式解决这个问题?

编辑:我选择这种数据类型的原因是我将使用数据填充HTML表格,并且只想使用嵌套的foreach循环进行迭代。

foreach(List<string ls in List<List<string>>)
   use a foreach(string) to generate a table for ls

4 个答案:

答案 0 :(得分:1)

我认为这可以更好地代表

class foo{
    public string val1 {get;set;}
    public string val2 {get;set;}
    public int val3 {get;set;}
}

然后

List<foo>

...但这只是我对你所呈现的数据的解释。

答案 1 :(得分:1)

我有一种感觉,你这是错误的方式。我会创建一个简单的类

class Item
{
    public string Category {get; set;}
    public string Name{get; set;}
    public string Value {get; set;}
}

并改为管理List<Item>

答案 2 :(得分:0)

List<List<string>> toListOfListOfString(Table table) 
{ 
  return table.Select(x=>new List<string>{x.Category,x.Name,x.Value.ToString()})
              .ToList();
}

答案 3 :(得分:0)

  var table = new [] {new {Category="a", Name="name1"},new {Category="a", Name="name2"},new {Category="B", Name="name3"}};
  List<List<string>> x = 
     table
        .GroupBy(
           row => row.Category, 
           (k, rows) => new List<string> (new [] {k}.Union(rows.Select(r => r.Name))))
        .ToList ();

当然,在你的情况下,你会使用你的桌子而不是我的。 ; - )