使用lambda表达式将DateTime格式转换为MMMM yyyy,dd

时间:2018-10-25 11:32:13

标签: c# linq lambda

我正在尝试将日期格式更改为MM:yyyy:dd(2018年10月24日),我尝试了所有我知道的方法,但是它不起作用...这是我的代码(我是许多方法之一上线):

var data = (from o in db.tbPATxns
                            join p in db.providers on o.providerid equals p.providertin
                            join a in db.Endorsements on o.panumber equals a.panumber
                            join b in db.members on o.IID equals b.legacycode
                            join c in db.proceduredatas on a.proccode equals c.procedurecode
                            where c.proceduredesc.ToLower().Contains("admission")
                            select new
                            {
                                o.panumber,
                                b.legacycode,
                                b.lastname,
                                b.firstname,
                                b.phone1,
                                p.providername,
                                a.txndate.ToString("MMMM yyyy, dd")
                            });

                RadGrid1.DataSource = data.ToList();
                RadGrid1.DataBind();

该查询假设是从数据库中获取所有必填字段,所以我想要将日期时间从数据库转换为(MMMM yyyy,dd),但是toString返回2类错误。

(1)

  

方法'ToString'的重载不接受1个参数

(2)

  

无效的匿名类型成员声明符。匿名类型成员必须   通过成员分配,简单名称或成员访问权限进行声明。

如果我删除ToString,输出将为

6/21/2018 4:40:15 PM

3 个答案:

答案 0 :(得分:0)

您可能打算使用ToString()方法(注意大写字母T)。 另外,如果您的txndate可为空,则添加空条件运算符:

var data = (from o in db.tbPATxns
                        join p in db.providers on o.providerid equals p.providertin
                        join a in db.Endorsements on o.panumber equals a.panumber
                        join b in db.members on o.IID equals b.legacycode
                        join c in db.proceduredatas on a.proccode equals c.procedurecode
                        where c.proceduredesc.ToLower().Contains("admission")
                        select new
                        {
                            o.panumber,
                            b.legacycode,
                            b.lastname,
                            b.firstname,
                            b.phone1,
                            p.providername,
                            a.txndate?.ToString("MMMM yyyy, dd")
                        });

答案 1 :(得分:0)

第一个错误表明a.txndate不是DateTime。也许是Tim所建议的Nullable<DateTime>。第二条错误消息意味着您必须为该属性提供一个名称,因为c#编译器不会从该值推断出它-因此,假设Nullable<DateTime>可以执行以下操作(查询被省略,因为它与错误无关):

select new
{
    o.panumber,
    b.legacycode,
    b.lastname,
    b.firstname,
    b.phone1,
    p.providername,
    txndate = a.txndate == null ? "" : a.txndate.Value.ToString("MMMM yyyy, dd")
}

答案 2 :(得分:0)

您可以尝试通过table来获取记录,然后将日期格式应用于预计的记录,例如

AsEnumerable