// EmployeeService:
[WebMethod]
public List<Employee> GetEmployees()
{
return
(
from p in db.Persons
where p.Type == 'E'
select new Employee
{
Name = p.FullName,
//HireDate = p.CreationDate.ToString(),
// works, but not in the format I need
//HireDate = p.CreationDate.ToString("s"),
// throws a NotSupportedException
//HireDate = Wrapper(p.CreationDate),
// works, but makes me worry about performance
// and feel dead inside
}
).ToList<Employee>();
}
private String Wrapper(DateTime date)
{
return date.ToString("s");
}
// Elsewhere:
public class Employee
{
public String Name;
public String HireDate;
}
我使用的是一個JavaScript框架,它需要ISO 8601風格格式的日期,這正是DateTime
對象返回時調用.ToString("s")
的原因。在LINQ實體中從DateTime獲取可排序字符串的正確方法是什麼?
在LINQ to SQL中有更清潔/更有效的方法嗎?
我的$ 0.02:沒有規定說你必須在同一件事上展示和排序。這是你不應該這樣做的時候。返回一個DateTime。 JavaScriptSerializer以專有格式處理這些內容。將JS反序列化爲JS日期。你的排序將起作用。 –
@Craig Stuntz:同意,儘管排序並不是我的問題;更關鍵的是ExtJS處理(特別是解析)ISO 8601比.NET專有格式乾淨得多。 '.ToString(「s」)'在Get上和'TryParse()'在Save上導致更少的麻煩(在我的情況下)。 –
我們所做的(在jQuery中,但應該可移植到Ext)是在返回的JSON上有一個反序列化過濾器,該過濾器查找MS格式並在反序列化期間用Date替換它。 –