我正在编写一个时间表应用程序(Silverlight),我完全坚持让 linq 查询正常工作。我对 linq 很熟悉,我刚刚阅读了 Linq 书中的许多示例,包括 Linq to Objects、linq to SQl 和 linq to Entities。(我假设,但不能 100% 确定后者就是 Lightswitch用途)。我计划研究更多的 Linq,但只需要让这个查询工作。
所以我有一个名为 Items 的实体,它列出了工作中的每个项目,它是序列号
所以:Job.ID int、ID int、SerialNolong
我还有一个 Timesheets 实体,其中包含班次日期、工作编号以及开始和结束序列号
所以 Job.ID int, ShiftDate date, Shift int, StartNolong, EndNolong
当用户从自动完成框中选择作业时,我想在时间表实体中查找该作业的 MAX(SerialNo)。如果为空(即没有生产),我想从 Items 实体中查找该作业的 MIN(SerialNo) (即他们应该生产的第一个序列号是什么)
我意识到我需要第一个或默认值,并且需要将 Items 中的 MIN(SerialNo) 指定为默认值。
我的时间表屏幕使用 TimesheetProperty 作为它的数据源
我尝试以下只是为了从 Timesheets 实体中获取 MAX(SerialNo):
var maxSerialNo =
(from ts in this.DataWorkspace.SQLData.Timesheets
where ts.Job.ID == this.TimesheetProperty.Job.ID
select ts.StartNo).Min();
但我收到以下错误:
实例参数:无法从“Microsoft.LightSwitch.IDataServiceQueryable”转换为“System.Collections.Generic.IEnumerable”
“Microsoft.LightSwitch.IDataServiceQueryable”不包含“Min”的定义,并且最佳扩展方法重载“System.Linq.Enumerable.Min(System.Collections.Generic.IEnumerable)”有一些无效参数
我也不明白为什么我不能使用这个:
var maxSerialNo = this.DataWorkspace.SQLData.Timesheets.Min(ts => ts.StartNo);
谁能指出我正确的方向?
谢谢
标记