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# 如何使用LINQ获取每N行?_C#_Entity Framework_Linq - Fatal编程技术网

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},