Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 代码查询.Take(()=>;1)做什么?_C#_Entity Framework_Linq - Fatal编程技术网

C# 代码查询.Take(()=>;1)做什么?

C# 代码查询.Take(()=>;1)做什么?,c#,entity-framework,linq,C#,Entity Framework,Linq,在维护一个项目查询时,我遇到了以下代码 query属于IQueryable类型 传递lambda与传递int有什么不同 edit:编辑以澄清我不是在询问first或default代码编写者应该有该行的书面文档 但如果您使用MSFT文档: public static System.Linq.IQueryable获取(此System.Linq.IQueryable源, System.Linq.Expressions.Expression countAccessor); countAccessor

在维护一个项目
查询时,我遇到了以下代码

query
属于
IQueryable
类型

传递lambda与传递
int
有什么不同


edit:编辑以澄清我不是在询问
first或default

代码编写者应该有该行的书面文档

但如果您使用MSFT文档:

public static System.Linq.IQueryable获取(此System.Linq.IQueryable源,
System.Linq.Expressions.Expression countAccessor);
countAccessor表达式


计算返回的元素数的表达式。

这里有几点需要解释

  • query.Take(()=>1
    ()

    这将返回一个可能包含单个项的
    IQueryable
    。它将运行一个使用SQL Server
    TOP
    语法的查询,这意味着它将在SQL Server 2008及更早版本上工作

  • query.Take(1)

    这与以前的版本类似,但它使用较新的SQL Server
    OFFSET
    /
    FETCH
    语法,并且是首选方法,除非您需要旧版支持

  • query.FirstOrDefault()

    这将返回实体的单个实例,如果没有匹配项,则返回null。如果需要单个项,则通常是首选方法。不过,您需要在代码中检查null


  • 将返回一个可枚举的查询,而
    查询。FirstOrDefault
    将为您提供一个项目,或null。它们将运行非常不同的@Sinatr请参见此处示例@DavidG该方法的文档不应该回答这个问题吗?如果是,它在哪里?@HimBromBeere不回答
    Take
    之间的差异e> FirstOrDefault
    though@DavidG但是,它不应该提到
    Take(int)
    Take(Func)
    之间的区别吗?否则,对于这个扩展,IMHO几乎没有什么用处。@Ergis这些文档属于一个扩展,所以它不是一个明显的查找位置(它不是一个标准的可查询扩展)当我认为答案是正确的时候,我在下面的答案中得到了a-1。是你吗?因为我真的为我的工作缺乏专业精神而沮丧here@Ergis不是我很抱歉,虽然有人也否决了这一点只是想知道,lambda不只是返回一个常量的用例是什么?@OlivierJacot Descombes返回一个常量?@DavidG
    ()=>1
    我指的是
    1
    返回。从API的角度来看,我们只需调用
    。取(1)
    public static System.Linq.IQueryable<TSource> Take<TSource> (this System.Linq.IQueryable<TSource> source, 
        System.Linq.Expressions.Expression<Func<int>> countAccessor);