Linq查询返回null。不明白为什么

Linq查询返回null。不明白为什么,linq,Linq,我的结果返回null IEnumerable<DataRow> result = ( from r in db.vedhaeftedeFilers.AsEnumerable() where r.beskedId == id select new { r.filnavn, r.filtype, r.data })as IEnumerable<DataRow>; 数据库中有数据,id正确。我猜是的 与我使用IEnumerable有关,但无法找出问题所在。如果您传递的对象实际

我的结果返回null

IEnumerable<DataRow> result = ( from r in db.vedhaeftedeFilers.AsEnumerable() where r.beskedId == id select new { r.filnavn, r.filtype, r.data })as IEnumerable<DataRow>;
数据库中有数据,id正确。我猜是的 与我使用IEnumerable有关,但无法找出问题所在。

如果您传递的对象实际上不是IEnumerable,则运算符将返回null,这显然不是因为您使用select new{…}投射到匿名类型

另一方面,aseneumerable调用会使数据库表表现得像一个哑数组,从而破坏性能

您到底想在这里做什么?

如果您要传递的对象实际上不是IEnumerable,那么操作符将返回null,这显然不是因为您正在使用select new{…}投射到匿名类型

另一方面,aseneumerable调用会使数据库表表现得像一个哑数组,从而破坏性能

你到底想在这里干什么

创建具有只读属性filnavn、filtype和data的匿名类型。因此,LINQ理解表达式的类型。。。如果选择的是IEnumerable notes,它将返回null

创建具有只读属性filnavn、filtype和data的匿名类型。因此,LINQ理解表达式的类型。。。选择是IEnumerable notes,它将返回null。

执行此操作时:

选择新{r.filnavn,r.filtype,r.data}

…您正在返回一个匿名类型的集合。这是一个问题,因为您试图将此集合强制转换为IEnumerable。由于您使用as-to-cast,它会自动消失并返回null,因为如果cast失败,使用as关键字的cast不会抛出InvalidCastException,而不是使用类似MyClass x=MyClassMyObj的parethesis进行cast

请尝试以下方法:

var result=来自db.vedhaeftedeFilers.AsEnumerable中的r,其中r.beskedId==id选择新的{r.filnavn,r.filtype,r.data}

请注意,我使用了var,没有尝试将结果强制转换为类型。

执行此操作时:

选择新{r.filnavn,r.filtype,r.data}

…您正在返回一个匿名类型的集合。这是一个问题,因为您试图将此集合强制转换为IEnumerable。由于您使用as-to-cast,它会自动消失并返回null,因为如果cast失败,使用as关键字的cast不会抛出InvalidCastException,而不是使用类似MyClass x=MyClassMyObj的parethesis进行cast

请尝试以下方法:

var result=来自db.vedhaeftedeFilers.AsEnumerable中的r,其中r.beskedId==id选择新的{r.filnavn,r.filtype,r.data}


请注意,我使用了var,没有尝试将结果强制转换为类型。

我试图将结果传递到datatable我试图将结果传递到datatable
select new { r.filnavn, r.filtype, r.data }