我正在尝试编写一个查询来收集作业中的作业编号,开始日期,客户名称,型号和完成日期。为了获得这些信息,我查看了3个不同的表,使用连接将它们组合在一起。以下是三个表格:
舞台 - (每个作业在制作期间完成)
订购 - (这是我得到客户姓名的地方)
JOBS(开始日期,完成日期,工号,型号)
所以大部分信息来自JOBS表。但是我正在通过Job Number(JobNum)加入ORDER表来获取客户的名字。这是查询的样子。在我尝试将其转换为我的一个ViewModel之前,我在SQL中创建了它:
var CompletedTrucksQuery =
(from FA in context.JOBS
join ORD in context.ORDER on FA.ORGANIZATION_ID equals ORD.ORGANIZATION_ID
where FA.ORDER_NUMBER == ORD.ORDER_NUMBER
join StageF in context.STAGE on FA.JobNum equals StageF.JobNum
where StageF.StageID == 325
join TruckComp in context.STAGE on FA.JobNum equals TruckComp.JobNum
where TruckComp.StageID == 327
join INSP in context.STAGE on FA.JobNum equals INSP.JobNum
where INSP.StageID == 487
orderby StageF.CompDate descending, FA.JobNum ascending
select new {FA.JobNum, FA.StartDate, ORD.CUSTOMER_NAME, FA.MODEL_NAME, StageF.CompDate});
此时,我想要选择
工作号码(来自JOBS),
开始日期,(来自JOBS),
客户名称(来自ORDER),
产品模型(来自JOBS),
以及在StageF中完成的日期(来自STAGE)
你可以在我的select语句中看到。我有一个对象来持有这些名为CompJob的东西,并试图做一个'分组'并选择一个新的CompJob并设置属性,但我似乎无法正确分组并获得所有'访问'我要设置的属性。这是我正在谈论的内容的摘录:
group new {FA.JobNum, O = ORD} by StageF into grp
select new CompletedTruck
{
JobNum = grp.Key.JobNum,
StartDate = grp. //???
}
你可以告诉我停了下来,因为出于某种原因我找不到开始日期。我知道这与我的分组有关。一般来说,我对linq和数据库都很陌生。
我的问题:我可以选择这些感兴趣的列到我的
的最佳方式是什么?ObservableCollection<CompJob> CompJobList;
这样我可以在视图中的滚动查看器中使用它吗?
答案 0 :(得分:0)
感谢大家帮助我。我解决了这个问题,这就是我所做的。我按照Gert Arnold的建议选择了一个新的CompJob对象。这会将查询的每一行设置为一个新对象:
select new CompJob {JobNum = FA.JobNum, StartDate = FA.StartDate, Customer = ORD.CUSTOMER_NAME,.....}
然后说
).ToList();
在查询结束时。然后我将ObservableCollection设置为我的查询返回的列表:
CompJobList = CompletedTrucksQuery ;
再次感谢您帮助我;我知道我对这一切都是新手!