Ответ 1
Это должно работать для вас
//Retrieve Minimum Date
var MinDate = (from d in dataRows select d.Date).Min();
//Retrieve Maximum Date
var MaxDate = (from d in dataRows select d.Date).Max();
(Из здесь)
Я перехожу от SQL к Linq, и мне нужна помощь. Я тестирую Linq-to-SQL и Linq-to-Entities. Я хочу попытаться решить, какой из них мне подходит. Ваша помощь приветствуется. Благодаря
Каков правильный синтаксис (по возможности, vb.net), чтобы выбрать минимальное значение даты из таблицы?
Dim mydata As New DataClassesDataContext
Dim myresult = From cv In mydata.T1s
Select cv.DATE1, cv.Date2, cv.Datex
myresult=Dump()
Я пробовал, я пытался использовать
Select amin=cv.DATE1.Min(), amax=cv.Date1.Max(), bmin=cv.Date2.Min(), etc....
дает эту ошибку 'Min' is not a member of 'Date'
.
Данные, которые я хочу получить min и max, находятся ниже:
IOrderedQueryable<VB$AnonymousType_0<DateTime,DateTime>> (16 items)
Date1 Date2
17/Oct/09 12:00:00 AM 23/Oct/09 12:00:00 AM
10/Jan/09 12:00:00 AM 15/Feb/09 12:00:00 AM
27/Mar/09 12:00:00 AM 27/Mar/09 12:00:00 AM
30/May/09 12:00:00 AM 30/May/09 12:00:00 AM
25/Jan/09 12:00:00 AM 25/Mar/09 12:00:00 AM
01/Nov/09 12:00:00 AM 01/Nov/09 12:00:00 AM
21/Feb/09 12:00:00 AM 04/Mar/09 12:00:00 AM
02/Mar/09 12:00:00 AM 09/Mar/09 12:00:00 AM
07/Jul/09 12:00:00 AM 07/Jul/09 12:00:00 AM
27/Sep/09 12:00:00 AM 27/Sep/09 12:00:00 AM
05/Nov/09 12:00:00 AM 05/Nov/09 12:00:00 AM
15/Apr/09 12:00:00 AM 15/Apr/09 12:00:00 AM
08/Jun/09 12:00:00 AM 08/Jun/09 12:00:00 AM
07/Jul/09 12:00:00 AM 07/Jul/09 12:00:00 AM
30/Jul/09 12:00:00 AM 30/Jul/09 12:00:00 AM
04/Nov/09 12:00:00 AM 04/Nov/09 12:00:00 AM
Теперь разрешено, но это не идеальное решение, кажется, что мне нужно было сделать отдельный запрос для каждого столбца, который требует функции aggreagate:
Sub Main
Dim mm = (From cv In T1s
Select Datez = (cv.Date1)).Min()
Dim mm1 = (From cv In T1s
Select Datez = (cv.Date1)).Max()
Dim mm2 = (From cv In T1s
Select Datez = (Date2)).Min()
Dim mm3 = (From cv In T1s
Select Datez = (Date2)).Max()
mm.dump()
mm1.dump()
mm2.dump()
mm3.dump()
End Sub
Результаты ниже
10/Jan/09 12:00:00 AM
05/Nov/09 12:00:00 AM
15/Feb/09 12:00:00 AM
05/Nov/09 12:00:00 AM
Это должно работать для вас
//Retrieve Minimum Date
var MinDate = (from d in dataRows select d.Date).Min();
//Retrieve Maximum Date
var MaxDate = (from d in dataRows select d.Date).Max();
(Из здесь)
Если вы ищете самую старую дату (минимальное значение), вы сортируете, а затем берете первый возвращенный элемент. Извините за С#:
var min = myData.OrderBy( cv => cv.Date1 ).First();
Вышеупомянутый возвращает весь объект. Если вы просто хотите вернуть дату:
var min = myData.Min( cv => cv.Date1 );
Относительно того, в каком направлении идти, re: Linq to Sql vs Linq to Entities, в наши дни действительно не так много выбора. Linq to Sql больше не разрабатывается; Linq to Entities (Entity Framework) - рекомендуемый путь Microsoft в наши дни.
От Microsoft Entity Framework 4 в действии (выпуск MEAP) от Manning Press:
Как насчет будущего LINQ to SQL?
Не секрет, что LINQ to SQL включен в Framework 4.0 по соображениям совместимости. Microsoft ясно заявила, что Сущность Рамки рекомендуются технологии для доступа к данным. в будущее будет сильно улучшено и тесно интегрированы с другими технологий, в то время как LINQ to SQL будет только поддерживаться и мало эволюционировали.
dim mydate = from cv in mydata.t1s
select cv.date1 asc
datetime mindata = mydate[0];