2012-02-18 4 views
1

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

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

ответ

2

Проблема заключается в том, что ваш запрос будет возвращать 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; 
+0

Лучше использовать 'Одиночная()', если вы хотите, чтобы убедиться, что вы получите только один результат, или использовать 'orderby' для контроля того, какой из нескольких результатов вы получите. – hvd

+0

с этим он говорит..cannot неявно конвертировать system.DateTimeOffset? to System.DateTimeOffSet .... и как я могу вернуть только дату – GANI

+0

@hvd Зависит от того, что «лучше» в этой ситуации - совсем другое поведение, и не обязательно правильно. –

Смежные вопросы