Дозвуковые 2,2 может сделать подзапросов:
Как полагает Адам, Editted и улучшенный пример использования В, это работает для меня:
SubSonic.Select s = new SubSonic.Select(SSDAL.Customer.CustomerIDColumn, SSDAL.Customer.NameColumn);
SubSonic.Aggregate a = new SubSonic.Aggregate(SSDAL.Customer.CustomerIDColumn, SubSonic.AggregateFunction.Max);
SSDAL.CustomerCollection COL = new SSDAL.CustomerCollection();
SubSonic.Select sq = new SubSonic.Select("LastCustomerId");
sq.Aggregates.Add(a);
sq.From(Tables.Customer);
a.Alias = "LastCustomerId";
s.From(Tables.Customer);
s.Where(SSDAL.Customer.CustomerIDColumn).In(sq);
COL = s.ExecuteAsCollection<SSDAL.CustomerCollection>();
;
Этот код производит следующий SQL:
SELECT [dbo].[Customer].[CustomerID], [dbo].[Customer].[Name]
FROM [dbo].[Customer]
WHERE [dbo].[Customer].[CustomerID] IN (SELECT MAX([dbo].[Customer].[CustomerID]) AS 'LastCustomerId'
FROM [dbo].[Customer])
Вы хотите использовать In, а не IsEqualTo хотя –
Привет, Zapatta Спасибо, Я пробовал то же самое .. но он дает ошибку .. IsEqual ожидает единственное значение .., но запрос возвращает коллекцию. И еще одна вещь: статус Select, преобразованный в две разные quries..не как подзапрос, который не ожидает. Спасибо nrk – nRk
Я отредактировал свой первоначальный ответ, чтобы включить образец подзапроса, который работает для меня, и должен работать на вас с некоторыми изменениями в соответствии. Он использует In, а не IsEqualTo, как было предложено Адамом. – Zapatta