Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.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/2/.net/23.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# 同样的问题。我想我把我的整个表情保持为一个IQueryable,没有打电话给ToList或任何其他列举表情的东西。Func会导致枚举而表达式不会导致枚举吗?@BrianSweeney我认为,这是因为如果排序查询没有包装在表达式中,那么linq无法为其构建表_C#_.net_Linq To Sql_Sql Server 2008_Entity Framework 4 - Fatal编程技术网

C# 同样的问题。我想我把我的整个表情保持为一个IQueryable,没有打电话给ToList或任何其他列举表情的东西。Func会导致枚举而表达式不会导致枚举吗?@BrianSweeney我认为,这是因为如果排序查询没有包装在表达式中,那么linq无法为其构建表

C# 同样的问题。我想我把我的整个表情保持为一个IQueryable,没有打电话给ToList或任何其他列举表情的东西。Func会导致枚举而表达式不会导致枚举吗?@BrianSweeney我认为,这是因为如果排序查询没有包装在表达式中,那么linq无法为其构建表,c#,.net,linq-to-sql,sql-server-2008,entity-framework-4,C#,.net,Linq To Sql,Sql Server 2008,Entity Framework 4,同样的问题。我想我把我的整个表情保持为一个IQueryable,没有打电话给ToList或任何其他列举表情的东西。Func会导致枚举而表达式不会导致枚举吗?@BrianSweeney我认为,这是因为如果排序查询没有包装在表达式中,那么linq无法为其构建表达式树以将其转换为sql。因此,在执行跳过/删除操作之前,必须枚举查询以对其进行排序,使其成为通用查询codepublic IEnumerable listenties(表达式排序、bool desc、int page、int pageSize


同样的问题。我想我把我的整个表情保持为一个IQueryable,没有打电话给ToList或任何其他列举表情的东西。Func会导致枚举而表达式不会导致枚举吗?@BrianSweeney我认为,这是因为如果排序查询没有包装在表达式中,那么linq无法为其构建表达式树以将其转换为sql。因此,在执行跳过/删除操作之前,必须枚举查询以对其进行排序,使其成为通用查询
code
public IEnumerable listenties(表达式排序、bool desc、int page、int pageSize、out int totalRecords){totalRecords=\u dbSet.Count();int skipRows=(page-1)*pageSize;if(desc){return\u dbSet.OrderByDescending(sort).Skip(skipRows).获取(pageSize.ToList();}返回_dbSet.OrderBy(sort).Skip(skipRows).Take(pageSize.ToList();}
code
@BrianSweeney和@Anduril:问题是,你调用的不是
Queryable.OrderBy
,它返回
IQueryable
你调用的是
Enumerable.OrderBy
它只返回
IEnumerable
。当然,从那一点来说,一切都变得更糟了。我认为R#对于这种情况,当你的call chain从IQueryable更改为IEnumerable,但没有显式使用
.AsEnumerable()
。我想您误解了这个问题。OP从未提到参数化
跳过
获取
,只是它们没有在SQL中执行(由于在
OrderBy
中错误地使用了
Func
而不是
表达式中的
Func
)。这可能是您将我的问题标记为重复问题的原因,即使它们不相同。
public IEnumerable<Store> ListStores(Func<Store, string> sort, bool desc, int page, int pageSize, out int totalRecords)
{
    var context = new TectonicEntities();
    totalRecords = context.Stores.Count();
    int skipRows = (page - 1) * pageSize;
    if (desc)
        return context.Stores.OrderByDescending(sort).Skip(skipRows).Take(pageSize).ToList();
    return context.Stores.OrderBy(sort).Skip(skipRows).Take(pageSize).ToList();
}
SELECT 
[Extent1].[ID] AS [ID], 
[Extent1].[Name] AS [Name], 
[Extent1].[LegalName] AS [LegalName], 
[Extent1].[YearEstablished] AS [YearEstablished], 
[Extent1].[DiskPath] AS [DiskPath], 
[Extent1].[URL] AS [URL], 
[Extent1].[SecureURL] AS [SecureURL], 
[Extent1].[UseSSL] AS [UseSSL]
FROM [dbo].[tec_Stores] AS [Extent1]
public IEnumerable<Store> ListStores(Func<Store, string> sort, bool desc, int page, int pageSize, out int totalRecords)
{
    var context = new TectonicEntities();
    totalRecords = context.Stores.Count();
    int skipRows = (page - 1) * pageSize;           
    var qry = from s in context.Stores orderby s.Name ascending select s;
    return qry.Skip(skipRows).Take(pageSize);           
}
SELECT TOP (3) 
[Extent1].[ID] AS [ID], 
[Extent1].[Name] AS [Name], 
[Extent1].[LegalName] AS [LegalName], 
[Extent1].[YearEstablished] AS [YearEstablished], 
[Extent1].[DiskPath] AS [DiskPath], 
[Extent1].[URL] AS [URL], 
[Extent1].[SecureURL] AS [SecureURL], 
[Extent1].[UseSSL] AS [UseSSL]
FROM ( SELECT [Extent1].[ID] AS [ID], [Extent1].[Name] AS [Name], [Extent1].[LegalName] AS [LegalName], [Extent1].[YearEstablished] AS [YearEstablished], [Extent1].[DiskPath] AS [DiskPath], [Extent1].[URL] AS [URL], [Extent1].[SecureURL] AS [SecureURL], [Extent1].[UseSSL] AS [UseSSL], row_number() OVER (ORDER BY [Extent1].[Name] ASC) AS [row_number]
    FROM [dbo].[tec_Stores] AS [Extent1]
)  AS [Extent1]
WHERE [Extent1].[row_number] > 3
ORDER BY [Extent1].[Name] ASC
Expression<Func<Store,string>> sort
public IEnumerable<Store> ListStores(Func<Store, string> sort, bool desc, int page, int pageSize, out int totalRecords)
{
    var context = new TectonicEntities();
    var results = context.Stores;

    totalRecords = results.Count();
    int skipRows = (page - 1) * pageSize;

    if (desc)
        results = results.OrderByDescending(sort);

    return results.Skip(skipRows).Take(pageSize).ToList();
}
public IEnumerable<Store> ListStores(Expression<Func<Store, string>> sort, bool desc, int page, int pageSize, out int totalRecords)
{
    List<Store> stores = new List<Store>();
    using (var context = new TectonicEntities())
    {
        totalRecords = context.Stores.Count();
        int skipRows = (page - 1) * pageSize;
        if (desc)
            stores = context.Stores.OrderByDescending(sort).Skip(skipRows).Take(pageSize).ToList();
        else
            stores = context.Stores.OrderBy(sort).Skip(skipRows).Take(pageSize).ToList();
    }
    return stores;
}
Expression<Func<Store, string>> sort
using System.Data.Entity;
....

int skip = 5;
int take = 10;

myQuery.Skip(() => skip).Take(() => take);
public static IEnumerable<T> SelectPage<T, T2>(this IEnumerable<T> list, Func<T, T2> sortFunc, bool isDescending, int index, int length)
{
    List<T> result = null;
    if (isDescending)
        result = list.OrderByDescending(sortFunc).Skip(index).Take(length).ToList();
    else
        result = list.OrderBy(sortFunc).Skip(index).Take(length).ToList();
    return result;
}
using (var context = new TransportContext())
{
    var drivers = (from x in context.Drivers where x.TransportId == trasnportId select x).SelectPage(x => x.Id, false, index, length).ToList();
}
context.Users.OrderBy(u => u.Id)
.Skip(() => 10)
.Take(() => 5)
.ToList
SELECT 
[Extent1].[Id] AS [Id], 
[Extent1].[UserName] AS [UserName]
FROM [dbo].[AspNetUsers] AS [Extent1]
ORDER BY [Extent1].[Id] ASC
OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY