繁体   English   中英

EF核心每天从实体中获取数据的限制

[英]EF core get data from entity per day by limit

这是一个实体

public class ViewModel
{
        public string Id { get; set; }
        public DateTime Start { get; set; }
        public string Name { get; set; }

}

这是我的上下文查询,与 dbcontext 中的 ef 核心一起使用。

var list = _Service.GetDataByMonth(start,end).ToList();
// it returns all entity between giving start, end param.
// start and end is Datetime property comes from ajax. This code works fine it return almost 1k objectlist with type of ViewModel

喜欢

[0] Id="1",Title="sample",Start:""15.12.2020"
[1] Id="2",Title="sample2",Start:""15.12.2020"
[2] Id="3",Title="sample3",Start:""16.12.2020"
[3] Id="4",Title="sample4",Start:""16.12.2020"

如上所示,我们每天有近 20 多个实体。

我可以每天计数

var listt = _Service.GetDataByMonth(start,end).GroupBy(x => x.Start.Date).Select(grp => new { Date = grp.Key, Count = grp.Count() });
    [0] Key:""15.12.2020",Count:20
    [1] Key:""16.12.2020",Count:25
    [2] Key:""17.12.2020",Count:44

它像这样返回。

所以我想要的是给开始和结束参数一个功能,然后在给定日期时间 object 之间每天获得 3 个值

新的

 var list1= _Service.GetDataByMonth(start,end).GroupBy(x => x.StartDate.Date)
                  .Select(grp => grp.Take(3)).ToList(); 
//this type List<Ienumerable<Viewmodel>>

var list2 = _Service.GetDataByMonth(start,end).GroupBy(x => x.StartDate.Date).Select(grp => grp.Take(3).ToList()).ToList();
// this type List<List<Viewmodel>>

My want it List<Viewmodel>

服务

...
return entity.Where(x =>                        
                    x.IsDeleted == false &&                    
                    (x.StartDate.Date >= start.Date && x.StartDate.Date <=end.Date)
                    ).OrderBy(x => x.FinishDate).ToList();

// 它以这种方式工作,但方式不好

var lis = list.SelectMany(d => d).ToList();

是的,我发现使用 selectmany 而不是 select 可以正常工作。 再次感谢你

您可以使用.Take()只取每组的 3 个项目:

_Service.GetDataByMonth(start,end)
   .GroupBy(x => x.Start.Date)
   .Select(grp => new { Data = grp.Take(3).ToList(), Date = grp.Key, Count = grp.Count() })
   .ToList();
 var list1= _Service.GetDataByMonth(start,end).GroupBy(x => x.StartDate.Date)
                  .Select(grp => grp.Take(3)).ToList(); 

它返回 List<List> 也许它会帮助一些人,但我的需要来自此代码 此代码使列表列表中的每个元素都是列表和 contians 3 object。

 var list1= _Service.GetDataByMonth(start,end).GroupBy(x => x.StartDate.Date)
                  .SelectMany(grp => grp.Take(3)).ToList(); 

许多人只列出清单。 它用有序对象制作列表

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM