2013-10-03 63 views
0

我有沒有映射到數據庫(sql server)的模塊,只用於生成報告。如何設置實體的值

public class Report 
{ 
    public int USERID { get; set; } 
    public DateTime DateToCal { get; set; } 
    public string Name { get; set; } 
    public string Position { get; set; } 
    public TimeSpan? Intime { get; set; } 
    public TimeSpan? OutTime { get; set; } 
} 

我生成一個查詢,並填寫一些屬性(用戶標識,DateToCal,姓名,職務,銀泰)的Report和報告的一些屬性保持爲空(爲OutTime is null

var query = .....; 

我想現在是什麼關於查詢的項目和設定值(類型Report的)迭代爲空的屬性,如OutTime

foreach(var items in query) 
      { 
       var outtime= from x in con.CHECKINOUTs 
           where x.USERID == items.USERID && EntityFunctions.TruncateTime(x.CHECKTIME) == EntityFunctions.TruncateTime(items.DateToCal && x.CHECKTYPE == "O" 
           select x.CHECKTIME 
           .Single(); 
       items.OutTime= outtime.TimeOfDay; 
      } 

現在的問題是,在mousehover到items.OutTime與在foreach中出現值,但如果我從foreach和mousehover到query仍然有OutTime is null。沒有出現我設定的價值。這是可能的,以這種方式來設置實體的價值。或者我的問題是什麼?

謝謝。

+0

一旦你設置的值,它不應該被覆蓋。真奇怪。 :( –

回答

1

查詢結果保存在本地迭代面前:

var query = ....ToList(); 

看起來像你的情況的查詢執行兩次 - 當你正在更新OutTime財產第一次,第二次,當你迭代查詢項目(要麼在調試器中查看,要麼在UI中顯示)。因此,當第二次執行查詢時,會看到全新的一組對象作爲查詢結果(其原始null值爲OutTime)。

BTW考慮使用單個JOIN查詢,而不是爲主查詢中的每個項目分別進行外部時間查詢。

+0

首先感謝您的迴應。我嘗試使用JOIN,但因爲InTime和OutTime都來自CHECKINOUT的CHECKTIME,取決於CHECKTYPE(I或O)。如果CHECKTYPE是I CHECKTIME將是InTime,並且如果CHECKTYPE是O CHECKTIME我將無法在同一個查詢中檢查CHECKTYPE,因此我使用子查詢。是否有其他方法可以做到這一點。請告訴我我有問題。 – link2jagann

+0

@ link2jagann好的,我會考慮加入查詢,但你需要提供你的'查詢'定義。我的答案解決了你的問題? –

+0

沒有任何其他方式使用列表或什麼? – link2jagann

0

try代碼是這樣的:

public class Report 
{ 
    public int USERID { get; set; } 
    public DateTime DateToCal { get; set; } 
    public string Name { get; set; } 
    public string Position { get; set; } 
    private TimeSpan? _intime; 
    public TimeSpan Intime { 
     get { return _intime ?? new TimeSpan(0); } 
     set { _intime = value; } 
    } 
    private TimeSpan? _outTime; 
    public TimeSpan OutTime 
    { 
     get { return _outTime ?? new TimeSpan(0); } 
     set { _outTime = value; } 
    } 
} 
+0

同樣的問題沒有改變。 – link2jagann