2011-08-15 50 views
0

我有一个数据库表有三个字段,类别,名称和值(字符串,字符串,int)。类别和名称是主键。我的意图是现在写这个排序表的内容返回到C#Linq数据库表到列表

List<List<string>> 

其中每个列表与同一类别条目列表(和第一串类)的方法。我怎么能这样做,还是我以错误的方式去做?

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

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

为什么你不返回一个字典<字符串,列表>其中的关键是类别名称和价值观,你将拥有所有相关的名称?你能提供一个输出的例子吗? –

+0

@dnikku很棒的建议。简直不敢相信我一开始并不这样认为。现在我可以迭代键,为每个键创建一个表,并使用与该键相对应的列表填充它! – yoozer8

回答

1

我有一种感觉,你正在以这种错误的方式去做。我会创建一个简单的类

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

并管理List<Item>来代替。

+0

我使用了Dictionary >,非常有帮助 – yoozer8

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

我认为这将是更好地

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

,并表示随后

List<foo> 

...但是这只是我的你提供的数据的解释。

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(); 

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