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

标签 c# .net linq simple.data

我正在尝试处理来自 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/

相关文章:

c# - Unity 中相机平滑变焦的问题

c# - 使用 HtmlAgilityPack 从两个 html 节点之间获取文本

c# - 反序列化 Protocol Buffer c++中的字符串数组

c# - 简单注入(inject)器 : End-to-end testing of controller's methods on a test database

C# RegEx 没有返回它应该返回的内容

c# - 在 C# 中将 PDF 文件转换为 HTML

c# - 是否有关于 Nhibernate 的概述,您必须按什么顺序使用扩展方法?

c# - 如何判断 Linq 对象是否已附加到数据上下文?

C# 字符串文字作为命令行参数使用@

C# Windows 服务 - 自动启动然后停止