// 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;
}
DateTime
オブジェクトで返されるものは、正確には.ToString("s")
というオブジェクトが返されるISO 8601スタイル形式の日付を必要とするJavaScriptフレームワークを使用しています。LINQエンティティのDateTimeからソート可能な文字列を取得する正しい方法は何ですか?
LINQ to SQLでこれを行うには、よりクリーンで効率的な方法がありますか?
My $ 0.02:同じことを表示して並べ替える必要があるというルールはありません。これは、あなたがしてはならない時代の一つです。 DateTimeを返します。 JavaScriptSerializerはこれらを独自の形式で処理します。 JSからJSの日付を逆シリアル化します。あなたの並べ替えは機能します。 –
@Craig Stuntz:合意しましたが、ソートは実際には私の問題ではありません。それは、ExtJSの扱い方(特に、解析する)が、ISO 8601よりも.NETの専有フォーマットよりはるかにきれいです。 '' .ToString( "s") 'とGetParse()で保存すると頭痛が減ります(特に私の場合)。 –
私たちは(jQueryでは、しかしExtに移植可能でなければならない)、返されたJSONに逆シリアル化フィルタを設定してMSフォーマットを探し、それを逆シリアル化の間に 'Date'に置き換えます。 –