gpt4 book ai didi

.net - 动态查询变量无法解析 IQueryable 方法

转载 作者:行者123 更新时间:2023-12-04 22:51:17 24 4
gpt4 key购买 nike

我试图弄清楚如何为使用 LINQ 查询的方法使用动态变量。例如,这很好用:

using (DBDataContext db = new DBDataContext()) 
{
var query = from c in db.Users
select
new
{
c.Firstname,
c.Lastname,
c.Age
};

gridUsers.VirtualItemCount = query.Count();
gridUsers.DataSource = query.ToList();
}

但这不起作用:
using (DBDataContext db = new DBDataContext()) 
{
dynamic query = from c in db.Users
select
new
{
c.Firstname,
c.Lastname,
c.Age
};

gridUsers.VirtualItemCount = query.Count();
gridUsers.DataSource = query.ToList();
}

错误是:“对象”不包含“计数”的定义。如何让它与动态关键字一起使用?

最佳答案

你必须使用:

gridUsers.VirtualItemCount = Queryable.Count(query);
gridUsers.DataSource = Enumerable.ToList(query);

动态类型不会“做”扩展方法。 (我不完全确定为什么。编译器存储了大量有关调用站点的信息 - 它基本上也必须存储与调用站点相关的所有 using 指令。它还会减慢动态绑定(bind),这可能是他们试图避免的问题。也许只是工作太多而 yield 太少。)

编辑:只是出于兴趣,您为什么首先尝试对您的序列使用动态类型?我怀疑你会发现像这样的各种事情变得更加棘手...... LINQ 非常依赖于各种类型的推断。

请注意,拥有 IQueryable<dynamic>IEnumerable<dynamic>很好,并且会更好地工作。

关于.net - 动态查询变量无法解析 IQueryable 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5191103/

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