gpt4 book ai didi

c# - 为什么我们需要使用 AsEnumerable() 方法?

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:17 26 4
gpt4 key购买 nike

此代码导致 NotSupportedException。

var detailList = context.Details.Where(x => x.GetType().GetProperty("Code").GetValue(x,null).ToString() == "00101").ToList();

但是这段代码有效。

    var detailList = context.Details.AsEnumerable().Where(x => x.GetType().GetProperty("Code").GetValue(x,null).ToString() == "00101").ToList();

MSDN 说:

- AsEnumerable() Returns the input typed as IEnumerable

- DbSet Is an IEnumerable

那么为什么我们需要使用 AsEnumerable() 方法呢?

最佳答案

DbSet也是IQueryable .

IQueryable有自己的一套 LINQ 扩展方法,将表达式树翻译成 SQL,并且不支持反射。

调用 AsEnumerable() ,您将表达式的编译时类型更改为 IEnumerable<T> ,强制扩展方法绑定(bind)到标准 LINQ 方法。

如果您更喜欢在服务器上运行查询,您应该构建一个表达式树而不是使用反射。

关于c# - 为什么我们需要使用 AsEnumerable() 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28812527/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com