Объект LINQ типа IEnumerable не возвращает DataTable

Может ли кто-нибудь кратко мне объяснить, почему я не могу использовать CopyToDataTable метод на следующем linq объект (из IEnumurable тип)?

var query = from r in SourceData.AsEnumerable()
        group r by r["fruitid"] into Dt
        select new
        {
        Group = Dt.Key,
        Sum = Dt.Sum((t)=> double.Parse(t["name"].ToString())) 
        };

Напоминание: моя цель состоит в получении DataTable следуя GroupBy Clause

1 ответ

Решение

Существует ограничение на универсальный тип CopyToDataTable.

Посмотрите на объявление метода:

public static DataTable CopyToDataTable<T>(this IEnumerable<T> source)
    where T : DataRow
{

}

Если вы заметили эту вторую строку, ваш IEnumerable<T> должен быть перечисляемым DataRows. У вас есть множество анонимных объектов.

В зависимости от того, что ваш DataTable приходит, привязывается и т. д., есть много других способов выполнить то, что вы пытаетесь сделать, но именно поэтому у вас нет этого метода доступным.

Другие вопросы по тегам