C# 返回错误结果的实体框架查询
我通常不会问关于我自己的错误或问题,但现在我被卡住了 我的问题是EF LinQ查询的结果。它应该会起作用,但不会。返回的数字是waaay out(如3.000.000%) 所以,把问题放在上下文中:假设你有一个组织,设计成方向。每个人都在一个方向上,被称为“资源” 每个人都从事“项目” 安抚适用于按时间间隔保存的项目(例如:从第0天到第11天,为1小时/天) 现在,我们需要所有资源(人员),按方向分组,并包含一段时间内的总时间 我的要求是:C# 返回错误结果的实体框架查询,c#,linq,entity-framework,C#,Linq,Entity Framework,我通常不会问关于我自己的错误或问题,但现在我被卡住了 我的问题是EF LinQ查询的结果。它应该会起作用,但不会。返回的数字是waaay out(如3.000.000%) 所以,把问题放在上下文中:假设你有一个组织,设计成方向。每个人都在一个方向上,被称为“资源” 每个人都从事“项目” 安抚适用于按时间间隔保存的项目(例如:从第0天到第11天,为1小时/天) 现在,我们需要所有资源(人员),按方向分组,并包含一段时间内的总时间 我的要求是: var result = from r in com.
var result = from r in com.Ressources
where
ids.Contains(r.Id)
&& (from p in r.Projects
where p.StartDate <= dates.To && p.EndDate >= dates.From
select p).Count() > 0
group r by r.Direction into groups
orderby groups.Key.DirectionName
select new
{
Id = groups.Key.Id,
DirectionName = groups.Key.DirectionName,
Responsable = groups.Key.Responsable.Prenom + " " + groups.Key.Responsable.Nom,
Ressources = from pr in groups
let totalpl = (double?)
(from planif in pr.Planification
let startOffset = JayaModelContainer.GetWorksDaysCount(planif.Project.StartDate, dates.From)
let endOffset = JayaModelContainer.GetWorksDaysCount(planif.Project.StartDate, dates.To)
where
planif.FromProjectDay <= endOffset && planif.ToProjectDay >= startOffset
let start = planif.FromProjectDay > startOffset ? startOffset : planif.FromProjectDay
let end = planif.ToProjectDay <= endOffset ? endOffset : planif.ToProjectDay
select (end - start + 1) * planif.Amount).Sum()
let totalrl = (double?)
(from reel in com.RealTimes
let startOffset = JayaModelContainer.GetWorksDaysCount(reel.Project.StartDate, dates.From)
let endOffset = JayaModelContainer.GetWorksDaysCount(reel.Project.StartDate, dates.To)
where reel.TimeSheet.Ressource.Id == pr.Id &&
reel.FromProjectDay <= endOffset && reel.ToProjectDay >= startOffset
let start = reel.FromProjectDay > startOffset ? startOffset : reel.FromProjectDay
let end = reel.ToProjectDay <= endOffset ? endOffset : reel.ToProjectDay
select (end - start + 1) * reel.Amount).Sum()
orderby pr.Prenom, pr.Nom
select new
{
Id = pr.Id,
FirstName = pr.Prenom,
LastName = pr.Nom,
Occupation = pr.Occupation.Name,
TotalPlanifs = totalpl,
TotalReels = totalrl,
PlannifCapacity = totalpl / maxCapacity,
ReelCapacity = totalrl / maxCapacity
}
};
var result=来自com.resources中的r
哪里
ids.Contains(r.Id)
&&(来自r项目中的p)
其中p.StartDate=日期。从
选择p).Count()>0
将r按r方向分组
orderby groups.Key.DirectionName
选择新的
{
Id=groups.Key.Id,
DirectionName=groups.Key.DirectionName,
Responsable=groups.Key.Responsable.Prenom+“”+groups.Key.Responsable.Nom,
Resources=来自分组中的pr
让totalpl=(双精度?)
(来自平面化中的平面图)
让startOffset=JayaModelContainer.getworksdaysunt(planif.Project.StartDate,dates.From)
让endOffset=JayaModelContainer.getworksdaysunt(planif.Project.StartDate,dates.To)
哪里
planif.FromProjectDay=STARTOFSET
让start=planif.FromProjectDay>startOffset?startOffset:planif.FromProjectDay
let end=planif.ToProjectDay startOffset?startOffset:revel.FromProjectDay
let end=revel.ToProjectDay startOffset?startOffset:planif.FromProjectDay
let end=planif.ToProjectDay startOffset?startOffset:revel.FromProjectDay
let end=Revel.TopProjectDay startOffset?planif.FromProjectDay:startOffset
let end=planif.ToProjectDay startOffset?revel.FromProjectDay:startOffset
让end=reel.TopProjectDay p.StartDate=dates。From是对的吗?From和to实际上似乎处于错误的比较中。我认为在此期间所有项目都处于活动状态。为了实现这一点,项目必须在结束日期之前开始,在开始日期之后完成。
let start = planif.FromProjectDay > startOffset ? startOffset : planif.FromProjectDay
let end = planif.ToProjectDay <= endOffset ? endOffset : planif.ToProjectDay
let start = reel.FromProjectDay > startOffset ? startOffset : reel.FromProjectDay
let end = reel.ToProjectDay <= endOffset ? endOffset : reel.ToProjectDay
let start = planif.FromProjectDay > startOffset ? planif.FromProjectDay : startOffset
let end = planif.ToProjectDay <= endOffset ? planif.ToProjectDay : endOffset
let start = reel.FromProjectDay > startOffset ? reel.FromProjectDay : startOffset
let end = reel.ToProjectDay <= endOffset ? reel.ToProjectDay : endOffset