SQL中的LINQ - 如何对数据进行排序并按月分隔

时间:2016-01-31 09:51:39

标签: c# sql-server linq

所以我的数据库架构非常糟糕:(

所以现在我需要编写用于从表数据获取的逻辑,我需要从这些数据创建我的类对象的List - 但是按月分开

我有桌子,我有列日期(2016-01-12 00:00:00.000这是格式)

所以现在我想获取数据 - 按日期分组(因为如果我有1天的一些记录 - 我希望获得一些属性的总和1天)

我需要创建数组(List):

这是我尝试的:

public List<DriverPayroll> GetAllPayrolls(int pageNumber, int showOnPage, string DriverNumber)
    {
        Database db = new Database();
        var loads = db .TableA.Where(i => i.Driver == DriverNumber).Skip(pageNumber * showOnPage).GroupBy(o => o.Data);
        List<DriverPayroll> payrols = new List<DriverPayroll>();
        DriverPayroll payRoll = new DriverPayroll();
        int month = loads.First().First().Data.Month;
        foreach (var load in loads)
        {
            if(load.First().Data.Month != month)
            {
                payrols.Add(payRoll);
                payRoll = new DriverPayroll();
            }


            DriverWordDay workDay = new DriverWordDay();
            workDay.Date = load.First().Data;
            var tt = workDay.Date.Month;
            LoadData newLoad = new LoadData();
            foreach (var data in load)
            {
                newLoad.Stops += data.Stops;
                newLoad.Base += data.Base;
                newLoad.Attempts += data.Stops_Atempts;
                newLoad.Total += data.Total;
            }
            workDay.Loads.Add(newLoad);
            payRoll.WorkDays.Add(workDay);
        }
        return payrols;
    }

如果我理解正确 - 这里我做的很蠢:

 if(d.First().Data.Month != month)
                    {
                        classA .Add(classB);
                        classB  = new ClassB();
                    }

因为我只是替换内存中的指针,对吧?

而且我也不喜欢这一切。

你能帮我改进一下这段代码吗?

谢谢

0 个答案:

没有答案