一个linq性能的有关问题

一个linq性能的问题
public IQueryable<StatisticsReimburseDTO> StatisticsReimburse(int userId,string projectCode,DateTime beginTime,DateTime endTime)
        {
            var query = (from g in wfEntities.dailyloglinedetail
                        where g.dailylogline.UserId == userId && g.dailylogline.ProjectCode == projectCode && g.dailylogline.DailyLogDate >= beginTime && g.dailylogline.DailyLogDate <= endTime && g.dailylogline.dailylogreceipt.DailyLogState == 2
                        group g by g.SubjectID into m
                        select new
                        {
                            SubjectId = m,
                            Amount = m.Sum(p => p.ActualAmount)
                        });
            return (from g in query
                    select new StatisticsReimburseDTO
                    {
                        SubjectId = g.SubjectId.Key,
                        Amount = g.Amount
                    });
        }
现在这块代码运行要两秒钟,有些慢。同志们觉得这个地方还有可以优化的地方吗?
------解决方案--------------------
直接看代码已经最简了。要想优化,需要看你的需求了。
------解决方案--------------------

public IQueryable<StatisticsReimburseDTO> StatisticsReimburse(int userId,string projectCode,DateTime beginTime,DateTime endTime)
        {
            var query = (from g in wfEntities.dailyloglinedetail
                        let p=g.dailylogline
                        where p.UserId == userId && p.ProjectCode == projectCode && p.DailyLogDate >= beginTime && p.DailyLogDate <= endTime && p.dailylogreceipt.DailyLogState == 2
                        group g by g.SubjectID into m
                        select new StatisticsReimburseDTO
                        {
                            SubjectId = m,
                            Amount = m.Sum(p => p.ActualAmount)
                        });
            return query;
        }

------解决方案--------------------
group g by g.SubjectID into m
                        select new
                        {
                            SubjectId =