2012-11-27 60 views
0

Users模型中,我有DateTime dtContractStartDateTime dtContractEnd。我有​​和String dtContractEnd幾個任務分配到一個選擇

要能執行字符串投與Linq查詢,我想嘗試這樣的事情:

DateTime start; 
DateTime end; 

var users = DB.Users 
    .Select(user => new UserModel 
    { 
     id = user.id, 
     firstname = user.firstname, 
     lastname = user.lastname, 
     dtContractStart = "", 
     dtContractEnd = "", 
    } 
     && start = user.dtContractStart 
     && end = user.dtContractEnd 
    ) 
    .ToList(); 

users.ForEach(user => 
    user.dtContractStart = start.toString() && 
    user.dtContractEnd = end.toString() 
); 

這可能嗎?我沒有找到好的語法。

+0

什麼是你想實現?使用查詢中的最後一個值設置變量?反之亦然,將所有創建的對象的開始和結束設置爲來自變量的值?請澄清你的意圖。 – J0HN

+0

我更新了我的問題。我只想實現一個字符串轉換。 –

+2

那麼爲什麼不在你的'Select'中做'dtContractStart = user.dtContractStart.ToString()'? –

回答

2

如果您使用不接受呼叫ToString的LINQ提供程序,您可以分兩步執行查詢,使用AsEnumerable強制查詢執行:

var users = DB.Users 
    .Where(...) // Whatever filtering clause inside your query 
    .AsEnumerable() // Force the query execution, switching to Linq to Objects 
    .Select(user => new UserModel 
    { 
     id = user.id, 
     firstname = user.firstname, 
     lastname = user.lastname, 
     dtContractStart = user.dtContractStart.ToString(), 
     dtContractEnd = user.dtContractEnd.ToString(), 
    }) 
    .ToList();