【问题标题】:How can I write Take(1) in query syntax如何在查询语法中编写 Take(1)
【发布时间】:2013-07-27 06:38:46
【问题描述】:

是否可以在 LINQ 查询语法中编写 IQueryable<MyObject> = query.Take(1) 或类似的东西。我正在使用 C# 5 和 EF 5。

【问题讨论】:

  • 很遗憾,没有,C# 语言中的 Linq 关键字没有 VB 那么多,但您可以通过在末尾添加 .Skip(n).Take(m) 来做到这一点而不会显得太乱。
  • @TimSchmelter 哦,酷。出于好奇,VB.NET 中的语法是什么?
  • Take实现了查询,应该和逻辑查询分开。
  • @Steaks: From r In query Take 2(跳过类似的工作)
  • 除了Take,VB还添加了Distinct、Aggregate、Count、Sum作为关键字。

标签: c# linq entity-framework take


【解决方案1】:

C# 中 LINQ 的查询表达式语法中没有与 Take 等效的内容。唯一具有查询表达式等效项的方法是

Where,
Select,
SelectMany,
Join,
GroupJoin,
OrderBy,
OrderByDescending,
ThenBy,
ThenByDescending,
GroupBy,
Cast

这来自规范的 §7.16.2。

【讨论】:

  • 我不知道有Enumerable.GroupJoin
【解决方案2】:

没有。您必须为该操作使用点语法。 ToListCount 等也是如此......

var query =
    (from item in list
     where predicate(item)
     select func(item))
    .Take(10);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多