gpt4 book ai didi

c# - 从 simple.data 枚举返回列表

转载 作者:行者123 更新时间:2023-11-30 19:31:58 25 4
gpt4 key购买 nike

我正在尝试处理来自 simple.data 的选择(查找..、全部等)的结果,但出现错误:

var db = Database.Open();
var codes = db.Code.All();

// 'object' does not contain a definition for 'First'
var firstcode = codes.First();
// 'object' does not contain a definition for 'ToList'
List<Code> codeList = codes.ToList();

codes 的类型是{System.Linq.Enumerable.WhereSelectListIterator<System.Collections.Generic.IDictionary<string,object>,Simple.Data.DynamicRecord>} .

我错过了什么?请有人添加一个 simple.data 标签.. :)

最佳答案

LINQ 方法对从 db.Code.All() 返回的对象不起作用的主要原因是在代码的那个点,C# 编译器不知道它是一个 IEnumerable,所以它不能'连接扩展方法。当然,C# 编译器不知道该对象是什么,因为它是动态的,所以它会忽略它并假定 First() 方法将在运行时解析。

我试图在最近的版本中解决这个问题,并且支持许多方法,包括 ToList、First、FirstOrDefault、Single、SingleOrDefault 和其他一些方法。更多内容即将推出(在 0.9.x 版本中)。

让编译器重新发挥全部作用的最简单方法是显式指定类型而不是使用 var。例如

IEnumerable<Code> codes = db.Codes.All();

将导致从 SimpleQuery 类型到 IEnumerable 类型的“隐式转换”(被引用是因为它不是真的,但它表现得像一个),此时您可以再次开始对其使用 LINQ 方法。

关于c# - 从 simple.data 枚举返回列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6123318/

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