簡體   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