C# 正在返回记录总数
我正在使用WCF rest服务,我想返回总记录计数,就像我们在webapi或breeze中使用inlinecount一样 我在WCF中的方法是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
[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; }
}