问题标签 [iqueryable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4039 浏览

c# - 将 LINQ to Entities 查询中的每个项目转换为接口的最佳方法是什么?

我有一个实现“IUser”的实体对象“用户”:

但我真正想要返回的是:

那么什么是最好的转换方式

没有实际运行查询?现在我正在这样做,但它似乎是一个 hack:

0 投票
2 回答
31801 浏览

c# - 如何转换 IQueryable到列表?

刚刚学习 LINQ,我在我的测试项目中遇到了新手路障。你能解释一下我做错了什么吗?

我收到一条错误消息:

无法将方法组“ToList”转换为非委托类型“System.Collections.Generic.List”您打算调用该方法吗?

0 投票
2 回答
97 浏览

linq-to-sql - 使用 linq2SQL 返回一对多关系?

有没有从 linq2sql 返回一对多关系的好方法,可能需要一些解释!:-)

基本上我有一个包含发票的表格和另一个包含发票详细信息的表格。

我有使用 linq2sql 设计器自动创建的 linq2sql 类...

因此,要返回发票 1232 有 15 个不同项目/详细信息的查询...我现在看到的方式是我必须对发票进行查询,然后对发票查询详细信息进行查询...

我敢肯定必须有一个更简单的方法?而不是做 2 个查询...即 JOIN?

我还想看看我是否可以返回 Iqueryable 中的值但使用链接表?

基本上我有我的方法是 Iqueryable<> GetInvoice();

当然 Iqueryable 是通用的,可以包含发票或发票详细信息 - 不能同时包含两者,或者我可能遗漏了什么?

0 投票
1 回答
207 浏览

linq - 使用 IQueryables 缓存策略

我一直在思考如何最好地缓存 IQueryables。我正在使用存储库模式将数据提取到诸如此类的类中:

现在我将如何最好地缓存这个对象?我想保持可查询的延迟执行,因为实际上除了 Category 之外还有更多可以链接到该项目的东西,我最好不要将它们获取到存储在对象上,因为对象可能会变得太大,或者它们可能需要单独缓存。

我在想编译查询可以以某种方式使这成为可能,我只是不太明白如何。有没有人找到任何好的解决方案?这似乎是一种非常常见的使用模式。

0 投票
4 回答
4844 浏览

c# - 如何维护 LINQ 延迟执行?

假设我有一个IQueryable<T>表达式,我想封装它的定义、存储它并重用它,或者稍后将它嵌入到更大的查询中。例如:

现在我相信我可以保留那个 myQuery 对象并像我描述的那样使用它。但有些事情我不确定:

  1. 如何最好地对其进行参数化?最初我在一个方法中定义了这个,然后返回了IQueryable<T>作为方法的结果。这样我可以将blahand定义bar为方法参数,我猜它IQueryable<T>每次都会创建一个新参数。这是封装逻辑的最佳方式IQueryable<T>吗?还有其他方法吗?

  2. 如果我的查询解析为标量而不是IQueryable怎么办? 例如,如果我希望这个查询与显示的完全一样,但追加.Any()只是让我知道是否有任何匹配的结果?如果我添加(...).Any()然后结果是bool并立即执行,对吗?有没有办法在不立即执行的情况下利用这些Queryable运算符(Any,SindleOrDefault等)?LINQ-to-SQL 如何处理这个问题?

编辑:第 2 部分实际上更多是关于尝试了解IQueryable<T>.Where(Expression<Func<T, bool>>)IQueryable<T>.Any(Expression<Func<T, bool>>). 在创建要延迟执行的较大查询时,后者似乎不那么灵活。Where()可以附加,然后可以稍后附加其他构造,然后最终执行。由于Any()返回一个标量值,听起来它会在构建查询的其余部分之前立即执行。

0 投票
1 回答
324 浏览

c# - 为什么我的 LINQ 语句返回 IEnumerable?

我有两种非常相似的方法:

最上面的,不会编译,说它返回 IEnumerable 而不是 IQueryable。

为什么是这样?

另外,我知道我可以在最后添加“AsQueryable()”,它会起作用。但这有什么区别?有什么性能命中吗?我了解 IQueryable 已延迟执行等,我还能获得此好处吗?

0 投票
1 回答
3322 浏览

asp.net-mvc - 对于强类型视图,自定义类型的 MVC LINQ to SQL JOIN 失败

我有两个表的简单数据模型,电子邮件和收件人,电子邮件可以发送给一个或多个收件人

我已经用这两个表设置了数据库,创建了 Linq to SQL 存储库,构建了控制器和强类型视图。

当我想从数据库中选择所有记录时,这很好用

自定义类型类

控制器只是将内容从存储库发送到强类型视图

要从数据库中只获取一条邮件记录,我有以下代码,它接受一个 deliveryId

及其控制器代码

我一直在尝试通过使用在 aspx 页面顶部具有 Inherits="System.Web.Mvc.ViewPage 的强类型视图来显示单个记录的输出,但出现以下错误

传入字典的模型项的类型为“System.Data.Linq.DataQuery`1[projectMail.Models.AllMailDetail]”,但此字典需要类型为 projectMail.Models.AllMailDetail 的模型项。

经过大量搜索后,我修复了这个错误,发现这篇文章最有帮助 MVC LINQ to SQL Table Join Record Display

所以我的视图不再是强类型的,我构建页面如下

这很好用,但似乎还有很长的路要走。我想不通的是

  1. 为什么第二个查询需要是 IQueryable
  2. 为什么当视图是强类型时它不起作用
  3. 如何使它与强类型视图一起工作
  4. 这是使用 LINQ to SQL 在 MVC 中处理连接的最佳方式吗
0 投票
1 回答
926 浏览

dynamic - 从具有多个连接的查询中加载 jqgrid

我正在尝试从具有多个连接的查询中加载可排序的 jqgrid 3.5,并且由于我是 Linq 和 jqgrid 的新手,因此遇到了很多困难。为了允许排序,我首先尝试使用动态 SQL 加载它。

由于我从多个表中提取列,我假设我的返回将是一个我将填充的类对象(或者它将是一个表)。使用带有多个 .JOIN 子句的动态 SQL 时,如何返回 IQueryable 自定义类对象。如果这是不可能的,我如何从存储过程调用中返回 IQueryable 数据。在存储过程中创建动态 SQL 很容易——但是我不确定如何使用它加载我的网格。

对不起,如果这到处都是,但我似乎找不到办法。如果您可以推荐最直接的方法来从具有多个连接的查询中加载我的可排序网格,我将不胜感激。

我的控制器代码:

我的课程代码(不完整):

0 投票
4 回答
5494 浏览

c# - 存储库方法与扩展 IQueryable

我有封装对域模型的数据访问的存储库(例如 ContactRepository、UserRepository 等)。

当我在寻找数据时,例如

  • 查找名字以 XYZ 开头的联系人
  • 生日在 1960 年之后的联系人

    (ETC),

我开始实现存储库方法,例如FirstNameStartsWith(string prefix)YoungerThanBirthYear(int year),基本上遵循了许多示例。

然后我遇到了一个问题——如果我必须合并多个搜索怎么办?我的每个存储库搜索方法,例如上面的,只返回一组有限的实际域对象。为了寻找更好的方法,我开始在 IQueryable<T> 上编写扩展方法,例如:

现在我可以做一些事情,比如

然而,我发现自己在编写扩展方法(并且到处发明了诸如ContactsQueryableExtensions之类的疯狂类,并且通过将所有内容都放在适当的存储库中,我失去了“漂亮的分组”。

这真的是这样做的方法,还是有更好的方法来实现相同的目标?

0 投票
2 回答
1724 浏览

c# - IQueryable Count 方法需要更长的时间来执行

WCF 构建在包含大约 200 个表和实体框架的数据库之上,在构建 WCF 后第一次执行登录需要花费大量时间(大约 2 分钟)。

进入代码发现 IQueryable.Count 方法是罪魁祸首。

这仅在构建 WCF 代码后第一次发生。Count 方法的连续执行速度如预期的那样快。

可能是什么原因?实体在重建代码后是否在做某种后台缓存?

请分享你的想法!

更新:

@Craig:感谢预生成视图链接

此外,此链接对 EF 有很多性能改进建议

另外,请查看 EF的延迟加载。