2012-02-18 4 views
1

Linqクエリで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; 
} 

のDateTimeOffset

タイプのテーブルから期日を取得する必要があります が暗黙のうちにSystem.DateTimeOffset

答えて

2

にsystem.Linq.IQueryableを変換することができない問題がであなたのクエリは、IQueryable<T>を返すということですタイプはDuedateのタイプです。

DuedateDateTimeOffsetある場合は、経由して(どこで複数の一致を返すことができます)最初の結果を返すことができます:あなたは一つだけを得ることを確実にしたい場合は、 `)

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

' .Singleを(使用する方は、結果を取得するか、 'orderby'を使用して複数の結果のうちどれを取得するかを制御します。これは – hvd

+0

となります。暗黙的にsystem.DateTimeOffsetを変換できませんでしたか? System.DateTimeOffSetに....と私はちょうど日付を返すことができます – GANI

+0

@hvdこの状況では "良い"に依存する - 非常に異なる動作、どちらも必ずしも正しいです。 –

関連する問題