Самый быстрый способ заполнить DataTable из запроса LINQ с помощью DataContext

Я пытаюсь выполнить запрос linq, но мне нужен результат в виде таблицы данных, поскольку я использую ее для хранения записей из разных запросов в одном и том же объекте состояния просмотра.

Две версии ниже компилируются, но возвращают пустой набор . Точная ошибка: «Значение не может быть нулевым. Имя параметра: source ". (И да, я проверил, есть ли данные):

MyDatabaseDataContext db = new MyDatabaseDataContext(conn); 
IEnumerable queryProjects = 
    (from DataRow p in db.STREAM_PROJECTs.AsEnumerable()
    where p.Field("STREAM_ID") == StreamID
    select new
    {
        PROJECT_ID = p.Field("PROJECT_ID"),
        PROJECT_NAME = p.Field("PROJECT_NAME")
    }) as IEnumerable;
DataTable results = queryProjects.CopyToDataTable();

...

//(from p in db.STREAM_PROJECTs.AsEnumerable()
//where p.STREAM_ID == StreamID
//select new
//{
//    p.PROJECT_NAME,
//    p.PROJECT_ID
//}) as IEnumerable;

Примеры в этом потоке , похоже, тоже не работают в этой ситуации .

Думаю, я мог бы просто запустить команду sql-запроса по старинке, но разве linq не должен быть быстрее?

7
задан Community 23 May 2017 в 12:16
поделиться