Linq查询DataTable

时间:2009-07-20 15:34:06

标签: linq datatable

我有一个从存储过程填充的DataTable。我正在使用groupby对DataTable进行查询,以便我可以在ListView中实现ListView。 (Matt Berseth - Building a Grouping Grid with the ASP.NET 3.5 LinqDataSource and ListView Controls

我的代码隐藏中的查询:

var query = from c in dtTaskOrder.AsEnumerable() 
        group c by c.Field<string>("CLIN") into g
        select new
        {
            Key = g.Key,
            Count = g.Count(),
            Items = g
        };

listv.DataSource = query.ToList();
listv.DataBind();

在我的aspx文件中,我尝试在项目和后续列上进行Eval:

<asp:ListView ID="lv1" ... DataSource='<%# Eval("Items") %>'>

   <td><%# Eval("SLIN") %></td> // column name
   <td><%# Eval("ACRN") %></td> // column name
   <td><%# Eval("Status") %></td> // last column name

HttpException未被用户代码处理 - 当它尝试对上述列名称进行Eval时。

如何制定上述查询以便“Items”为“Typed”,我可以使用列名。

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

如果不仅仅是拼写错误,您可以使用g上的子查询来构建强类型对象的集合:

var query = from c in dtTaskOrder.AsEnumerable()
            group c by c.Field("CLIN") into g
            select new
            {
                Key = g.Key,
                Count = g.Count(),
                Items = from i in g
                        select new { CLIN = i.Field("CLIN"),
                                     ACRN = i.Field("ACRN"),
                                     Status = i.Field("Status") }
            };

答案 1 :(得分:0)

你写的Eval(“SLIN”)是否可能是Eval(“CLIN”)? 只是一个想法。否则,我之前使用相同的代码并且它可以工作。