我正在使用.net 3.5 WCF,我需要将日期字段"r.DateReceived"转换为shortdate.当我尝试使用.toShortDateString()时,我收到警告"必须使用成员赋值声明匿名类型成员".结果将转换为Json.
var json = from r in results
                       select Convert(new
                       {
                           r.CaseId,
                           r.TamisCaseNo,
                           r.TaxPdr,
                           r.OarNo,
                           r.Tin,
                           r.DateReceived,
                           r.IdrsOrgAssigned,
                           r.IdrsTeAssigned,
                           r.DateRequestComp
                       });
来自MSDN:
如果未在匿名类型中指定成员名称,则编译器会为匿名类型成员提供与用于初始化它们的属性相同的名称.您必须为使用表达式初始化的属性提供名称
因此,只有初始化程序直接绑定到属性或字段时,才能推断出匿名类型的属性名称.如果您正在调用方法或使用其他某种表达式,则需要明确指定属性名称,如下所示:
var json = from r in results
                   select Convert(new
                   {
                       r.CaseId,
                       r.TamisCaseNo,
                       r.TaxPdr,
                       r.OarNo,
                       r.Tin,
                       DateReceived = r.DateReceived.ToShortDateString(),
                       r.IdrsOrgAssigned,
                       r.IdrsTeAssigned,
                       r.DateRequestComp
                   });