私はタイムシート アプリケーション (Silverlight) を作成していますが、linq クエリを機能させることに完全に行き詰まっています。私は linq を知っていて、Linq to Objects、linq to SQl、linq to Entities など、Linq の本を読み、そこから多くの例を作成しました。使用します)。私はさらに多くのLinqを研究する予定ですが、この1つのクエリを機能させる必要があるだけです.
だから私は仕事のすべてのアイテムをリストするアイテムと呼ばれるエンティティを持っています、そしてそれはシリアル番号です
そのため、Job.ID int、ID int、SerialNo long
また、シフト日、ジョブ番号、開始シリアル番号と終了シリアル番号を含む Timesheets エンティティもあります。
Job.ID int、ShiftDate 日付、Shift int、StartNo long、EndNo long
ユーザーがオートコンプリート ボックスからジョブを選択すると、timesheets エンティティでそのジョブの MAX(SerialNo) を検索したいと考えています。それが null の場合 (つまり、何も作成されていない)、そのジョブの 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);
誰かが私を正しい方向に向けることができますか?
ありがとう
マーク