У меня есть следующие Linq To Sql запросовИспользование Линг Sql, объединить два запроса в один, а затем получить INT значение результата
var group = "T";
var categoryQuery = from m
in ctx.Material
where m.Group == group
select m;
var maxValue = from c
in categoryQuery
where c.Order == categoryQuery.Select(o => o.Order).Max()
select c.Order;
Где Group
это значение строки (например: «T», «S», «R») и Order
- значение int. Я хочу достичь самого высокого значения Order
int из строки в результирующем наборе, отфильтрованного определенным значением Group
. В конечном счете, я хочу использовать максимальное значение для сравнения в другом месте кода, но у меня возникли проблемы с доступом к значению из объекта IQueryable maxValue
.
Так образец из categoryQuery
набора будет выглядеть следующим образом:
Id Group Order
----- ----- -----
100 T 0
101 T 1
102 T 2
103 T 3
Так во втором maxValue
запроса, я хочу 3, потому что это не более Order
значения из всех Т Group
значений.
Первый вопрос: Как получить доступ к значению int в maxValue
?
Второй вопрос: как я могу упростить свои запросы в одном запросе?
Спасибо
Это приведет в одном запросе в конце концов. Вы посмотрели на запрос, который сгенерирован? [datacontext.log] (https://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.log (v = vs.110) .aspx) –
Ваш запрос 'maxValue' просто идет чтобы быть списком максимального 'Order' в' categoryQuery', повторяющимся 0 или более раз. Что именно вы пытаетесь сделать? Можете ли вы показать некоторые примеры данных и результаты, которые вы хотите получить? – juharr
Добавлены некоторые примеры данных, чтобы лучше прояснить вопрос. – ratman