【问题标题】:C# Linq DB table to List of ListsC# Linq DB 表到列表列表
【发布时间】:2011-08-15 20:14:55
【问题描述】:

我有一个包含三个字段的数据库表,类别、名称和值(字符串、字符串、int)。类别和名称一起是主键。我现在的意图是编写一个方法来返回这个表的内容排序到一个

List<List<string>>

其中每个 List 是具有相同类别的条目列表(第一个字符串是类别)。我该怎么做,还是我做错了?

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

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

【问题讨论】:

  • 你为什么不返回一个 Dictionary> ,其中键是类别名称,而在值中你将拥有所有关联的名称?你能提供一个输出的例子吗?
  • @dnikku 很好的建议。不敢相信我一开始就没有想过这样做。现在我可以遍历键,为每个键创建一个表,然后用与该键对应的列表填充它!

标签: c# linq


【解决方案1】:

我感觉你做错了。我会创建一个简单的类

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

改为管理List&lt;Item&gt;

【讨论】:

  • 我用过 Dictionary>,很有帮助
【解决方案2】:

我认为这会更好地代表

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

然后

List<foo>

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

【讨论】:

    【解决方案3】:
    List<List<string>> toListOfListOfString(Table table) 
    { 
      return table.Select(x=>new List<string>{x.Category,x.Name,x.Value.ToString()})
                  .ToList();
    }
    

    【讨论】:

      【解决方案4】:
        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 ();
      

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

      【讨论】:

        猜你喜欢
        • 2010-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-26
        相关资源
        最近更新 更多