Linq-запрос на DataTable - PullRequest
3 голосов
/ 20 июля 2009

У меня есть DataTable, который заполняется из хранимой процедуры. Я делаю запрос к DataTable, используя groupby, чтобы я мог реализовать ListView в ListView. (Мэтт Берсет - Построение группирующей сетки с помощью элементов управления ASP.NET 3.5 LinqDataSource и ListView )

Мой запрос в моем коде:

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 для указанных выше имен столбцов.

Как я могу сформулировать вышеупомянутый запрос, чтобы "Предметы" были "Типизированы", и я мог использовать имена столбцов.

Спасибо за вашу помощь.

Ответы [ 2 ]

3 голосов
/ 21 июля 2009

Если это не просто опечатка, вы можете использовать подзапрос в 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") }
            };
0 голосов
/ 20 июля 2009

Возможно ли, что Eval ("SLIN"), который вы написали, должен быть Eval ("CLIN")? просто мысль. В противном случае, я использовал тот же код раньше, и он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...