C# 正在返回记录总数

C# 正在返回记录总数,c#,linq,entity-framework,wcf,wcf-rest,C#,Linq,Entity Framework,Wcf,Wcf Rest,我正在使用WCF rest服务,我想返回总记录计数,就像我们在webapi或breeze中使用inlinecount一样 我在WCF中的方法是 [WebGet(UriTemplate = "GiveMeNamesOfStudents", ResponseFormat = WebMessageFormat.Json)] public List<MyDataClass> GiveMeNamesOfStudentsList() { var return

我正在使用WCF rest服务,我想返回总记录计数,就像我们在webapi或breeze中使用inlinecount一样

我在WCF中的方法是

   [WebGet(UriTemplate = "GiveMeNamesOfStudents", ResponseFormat = WebMessageFormat.Json)]
    public List<MyDataClass> GiveMeNamesOfStudentsList()
    {
        var returnData = (from myentity in myEntityRepository.AsQueryable()
                          select new MyDataClass
                            {
                                Id = myentity.Id,
                                Name = myentity.Name
                            }).Skip(PageSize * PageNo).Take(PageSize).ToList();
        return returnData;
    }
如何将实际数据的总记录计数与数据一起返回?

我建议返回一个包含列表和总计数的列表

您可以添加其他信息,例如页面计数,但我将在这里保持简单

首先创建泛型,这样您也可以在其他方法中使用它

现在返回对象


您必须查询数据库两次;如果没有.Skip.Take,则获取总计数,然后使用.Skip.Take再次运行相同的查询以获取数据页

    var returnData = (from myentity in myEntityRepository.AsQueryable()
                      select new MyDataClass
                        {
                            Id = myentity.Id,
                            Name = myentity.Name
                        }).Skip(PageSize * PageNo).Take(PageSize).ToList();

    var totalCount = myEntityRepository.myentity.count();

另一种选择可能是不使用EF,而只调用一个存储过程,该存储过程可以运行两个查询并返回输出参数中的两个值。这仍然会运行2个查询,但只会使用1个调用frm将您的应用程序调用到DB,而不是2个。

因为您的方法的返回类型是List,所以您不能返回任何其他内容。您需要引入一个DTO,该DTO将返回实体和计数:

public class MyDataClassDTO
{
    public List<MyDataClass> Data { get; set; }
    public int TotalRecordCount { get; set; }   
}

然后返回。

是否要返回找到的总记录数以及实际分页数据?您的问题是什么?对列表中的元素进行计数?向每个包含集合的传出邮件添加total record count属性?@haim770是我想返回我的实际记录计数data@Happy,以及实际数据?或者仅仅是计数?@haim770加上实际数据我正在尝试。SkipPageSize*PageNo.TakePageSize.ToList.count但它不工作称为count not count的方法。现在可以了吗?@dknaack,您的计数只会返回页面大小。将计数添加到末尾将不起作用,因为它只会计算该页面上的项目数,因为“跳过并获取”。@Happy,它不起作用,因为该方法需要返回列表,not int。我如何在返回列表中返回这个totalCount变量,而是返回一个容器对象。类似于类PageResult{public List Data{get;set;};public int Count{get;set;}
    var returnData = (from myentity in myEntityRepository.AsQueryable()
                      select new MyDataClass
                        {
                            Id = myentity.Id,
                            Name = myentity.Name
                        }).Skip(PageSize * PageNo).Take(PageSize).ToList();

    var totalCount = myEntityRepository.myentity.count();
public class MyDataClassDTO
{
    public List<MyDataClass> Data { get; set; }
    public int TotalRecordCount { get; set; }   
}