【发布时间】:2023-04-06 19:52:01
【问题描述】:
我正在尝试运行 linq 查询,但我需要将结果作为数据表,因为我使用它来将来自不同查询的记录存储在同一个视图状态对象中。
下面的 2 个版本编译,但返回一个空集。确切的错误是 “值不能为空。 参数名称:来源”。(是的,我已经检查过有数据):
MyDatabaseDataContext db = new MyDatabaseDataContext(conn);
IEnumerable<DataRow> queryProjects =
(from DataRow p in db.STREAM_PROJECTs.AsEnumerable()
where p.Field<int>("STREAM_ID") == StreamID
select new
{
PROJECT_ID = p.Field<int>("PROJECT_ID"),
PROJECT_NAME = p.Field<string>("PROJECT_NAME")
}) as IEnumerable<DataRow>;
DataTable results = queryProjects.CopyToDataTable<DataRow>();
...
//(from p in db.STREAM_PROJECTs.AsEnumerable()
//where p.STREAM_ID == StreamID
//select new
//{
// p.PROJECT_NAME,
// p.PROJECT_ID
//}) as IEnumerable<DataRow>;
thread 中的示例似乎也不适用于这种情况。
我想我可以用老式的方式运行一个 sql 查询命令,但是 linq 不应该更快吗?
【问题讨论】:
标签: c# asp.net linq datatable ienumerable