Как вернуть тип DateTimeOffset с помощью Linq - PullRequest
1 голос
/ 18 февраля 2012

как вернуть DateTimeOffset с запросом Linq. Мне нужно получить дату выполнения из таблицы типа DateTimeOffset

public DateTimeOffset GetLastDate(Guid Id, Guid AppId)                     
{
   var q = from k in context.Inspections
           where k.Id == Id || k.AppId == AppId
           select k.Duedate;
   return q;
}

не может неявно преобразовать system.Linq.IQueryable в System.DateTimeOffset

1 Ответ

2 голосов
/ 18 февраля 2012

Проблема в том, что ваш запрос вернет IQueryable<T>, с типом типа Duedate.

Если Duedate является DateTimeOffset, вы можете вернуть первый результат (где можно вернуть несколько совпадений) с помощью:

    var q = from k in context.Inspections
            where k.Id== Id||k.AppId== AppId
            select k.Duedate;
    DateTimeOffset? value = q.First();

    if (value.HasValue)
        return value.Value;
    else // found NULL in DB! Do something in this case...
        throw new ApplicationException("Null offset found");

    // Alternatively, you could use some default value (this uses "Now"):
    // return value ?? DateTimeOffset.Now;
...