У меня есть тестовая база данных, которая регистрирует данные, когда магазин входит на портал магазина и как долго он остается в системе.
Пример: (только для наглядности - не фактическая база данных)
Stores
Id Description Address City
1 Candy shop 43 Oxford Str. London
2 Icecream shop 45 Side Lane Huddersfield
Connections
Id Store_Ref Start End
1 2 2011-02-11 09:12:34.123 2011-02-11 09:12:34.123
2 2 2011-02-11 09:12:36.123 2011-02-11 09:14:58.125
3 1 2011-02-14 08:42:10.855 2011-02-14 08:42:10.855
4 1 2011-02-14 08:42:12.345 2011-02-14 08:50:45.987
5 1 2011-02-15 08:35:19.345 2011-02-15 08:38:20.123
6 2 2011-02-19 09:08:55.555 2011-02-19 09:12:46.789
Мне нужно получить различные данные из базы данных.Я уже получил максимальную и среднюю продолжительность соединения.(Так что, вероятно, это само собой разумеется ...) Мне также нужно иметь некоторую информацию о том, какая связь длилась меньше всего.Я, конечно, сразу подумал о функции Min () Linq, но, как вы можете видеть, база данных также включает соединения, которые начинались и заканчивались мгновенно.Следовательно, эти данные не являются «действительными» для анализа данных.
Так что мой вопрос в том, как получить минимальное значение, но если значение = 0, получите следующее значение, которое является самым низким.
Мой запрос linq до сих пор (который реализует Min () функция):
var min = from connections in Connections
join stores in Stores
on connections.Store_Ref equals stores.Id
group connections
by stores.Description into groupedStores
select new
{
Store_Description = groupedStores.Key,
Connection_Duration = groupedStores.Min(connections =>
(SqlMethods.DateDiffSecond(connections.Start, connections.End)))
};
Я знаю, что возможно получить действительные значения с помощью нескольких запросов и / или операторов, но мне было интересно, возможно ли сделать все это всего за один запрос, так как мойПрограмма ожидает, что будут возвращены запросы linq, и я предпочитаю поддерживать программу как можно более легкой.
Если вам нужен отличный / простой метод, пожалуйста, поделитесь им.Ваш вклад очень ценится!:)