C# 如何使用LINQ获取每N行?
我正在开发C# 如何使用LINQ获取每N行?,c#,entity-framework,linq,C#,Entity Framework,Linq,我正在开发webapi。在我的控制器中,我创建了一个方法,该方法采用两个参数仪表序列号和日期时间。然后在API中调用此方法 public HttpResponseMessage GetDetails(string msn, DateTime dt) { try { int count = giveCount(msn, dt); int interval = count / 500;
webapi
。在我的控制器中,我创建了一个方法
,该方法采用两个参数仪表序列号
和日期时间
。然后在API
中调用此方法
public HttpResponseMessage GetDetails(string msn, DateTime dt)
{
try
{
int count = giveCount(msn, dt);
int interval = count / 500;
//TODO......
return Request.CreateResponse(HttpStatusCode.OK, new {details = interval });// actuall output will be different, for now I am just testing it.
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex);
}
}
在上面的代码中,有计数
,然后是间隔
。假设计数为10000
,则10000/500
将为20
。所以间隔是20,我想在从1st
开始的每20条记录之后提取一条记录。查询如下
var prodDetails = mdcEntitites.tj_xhqd.Where(m => m.sjsj >= dt)
.Select(x => new { MSN = x.zdjh, PingDateTime = x.sjsj, PingValue = x.xhqd })
.ToList();
我也看到了这一点,但仍然无法得到我想要的结果
如何设置根据时间间隔给出结果的查询
任何帮助都将不胜感激
注意:间隔值不是固定的。使用链接解决方案,您可以执行以下操作:
var prodDetails = mdcEntitites.tj_xhqd.Where(m => m.sjsj >= dt)
.Select((x, i) => new { Prod = new { MSN = x.zdjh, PingDateTime = x.sjsj, PingValue = x.xhqd }, Index = i })
.Where(x => x.Index % interval == 0)
.Select(x => x.Prod)
.ToList();
var prodDetails=mdcentities.tj_xhqd.Where(m=>m.sjsj>=dt).选择((x,i)=>new{MSN=x.zdjh,PingDateTime=x.sjsj,PingValue=x.xhqd,i=i}).其中(x=>(x.i%20)==0.ToList();考虑使用Melelin的<代码> TakeEvery < /代码> @ JDWEN,但我得到的是同一条记录的多个值。@这是我的输出<代码> {“MSN”:“2018—05-16T18:39∶52”,“PingValue”:“19”,“I”:0 },{“MSN”:“002999001180”,“PingDateTime”:“2018—05-16T18:39:52”,“PingValue”:“19”,“I”:24 },“MSN”:“MSN”:“002999001180”,“PingDateTime”:“2018-05-16T18:39:52”,“PingValue”:“19”,“i”:48},相同的记录保留在上您称之为重复的是什么?它们不是重复的,因为i值不同。时间不同,但您看不到它,因为它非常小。ping通常重复3到5次。您可以使用GroupBy组合ping。我收到此错误
LINQ to Entities无法识别method'System.Linq.IQueryable
.AsEnumerable()
对我有效,但我得到了相同记录的多个值这是我的输出{“MSN”:“00299001180”,“PingDateTime”:“2018-05-16T18:39:52”,“PingValue”:“19”,“I”:0},{“MSN”:“00299001180”,“PingDateTime”:“2018-05-16T18:39:52”,“PingValue”:“19”,“I”:24},{“MSN”:00299901180,“PingDateTime:“2018-05-16T18:39:52”,“PingValue:“19”,“i”:48},