LINQ to SQL объединяется в MIN с помощью JOIN - PullRequest
0 голосов
/ 19 апреля 2010

У меня проблемы с запросом LINQ to SQL, получающим минимальное значение с помощью Visual Basic. Вот SQL:

SELECT RC.AssetID, MIN(RC.RecCode) AS RecCode, JA.EngineerNote from JobAssetRecCode RC
JOIN JobAssets JA ON JA.AssetID = RC.AssetID AND JA.JobID = RC.JobID
WHERE RC.InspState = 2 AND RC.RecCode > 0
AND RC.JobID = @JobID
GROUP BY RC.AssetID, JA.EngineerNote;

Я, кажется, хожу по кругу с группировкой и т. Д., Но мне не удается заставить ее работать. Любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ: Стивен, спасибо за помощь. Преобразовано в VB:

Dim jobResult = From asset In m_dc.JobAssets _
    From recCode In asset.JobAssetRecCodes _
    Where recCode.InspState = 2 And recCode.RecCode > 0 _
    And recCode.JobID = JobID _
    Group recCode By recCode.AssetID Into g = Group _
    Select New With {g.First().JobAssets.AssetID, _
    g.First().JobAssets.EngineerNote, _
    g.Select(Function(rec) rec.RecCode).Min()}

1 Ответ

0 голосов
/ 19 апреля 2010

Мне пришлось провести обратный инжиниринг вашей модели данных из запроса, так что это немного предположение, но я думаю, что этот запрос может помочь.Обратите внимание, что это C #, но конвертировать его в VB должно быть довольно просто:

int jobId = [some value];

var minRecCodes =
    from asset in db.JobAssets
    from recCode in asset.JobAssetRecCodes
    where recCode.InspState == 2 && recCode.RecCode > 0 &&
        recCode.JobID == jobId
    group recCode by recCode.AssetID into g
    select new
    {
        AssetID = g.Key, 
        EngineerNote = g.First().JobAsset.EngineerNote,
        g.Select(rec => rec.RecCode).Min()
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...