LINQ to Entities无法识别我的方法 [英] LINQ to Entities does not recognize my method

查看:96
本文介绍了LINQ to Entities无法识别我的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在LINQ select中将日期和时间转换为波斯语,但是linq无法识别我的方法:

I want to convert date and time to Persian in LINQ select but linq can not recognize my method :

LINQ to Entities无法识别方法'System.String toPersianDateTime(System.DateTime)',该方法无法转换为商店表达式.

如何将我的方法更改为与LINQ兼容?

How can I change my method to LINQ compatible?

我的方法:

public static string toPersianDateTime(DateTime dt)
{
    PersianCalendar pc = new PersianCalendar();
    string pDateTime = pc.GetYear(dt).ToString() + "/" + pc.GetMonth(dt).ToString() + "/" + pc.GetDayOfMonth(dt).ToString() + " ";
    pDateTime += pc.GetHour(dt) + ":" + pc.GetMinute(dt) + ":" + pc.GetSecond(dt);
    return pDateTime;
}

还有我的LINQ代码:

And my LINQ code :

var result = (from ord in db.vw_orders
              where ord.uid == user.id
              orderby ord.order_date descending
              select new { ord.id,
                           date = Tools.toPersianDateTime((DateTime)ord.order_date),
                           ord.is_final, 
                           ord.status, 
                           ord.image_count, 
                           ord.order_count, 
                           ord.total_price });

推荐答案

EF无法将您的自定义方法转换为SQL.您可以注入.AsEnumerable()调用以将基础上下文从EF更改为Linq-to-Objects:

EF cannot translate your custom method to SQL. You can inject a .AsEnumerable() call to change the underlying context from EF to Linq-to-Objects:

var result = (from ord in db.vw_orders
              where ord.uid == user.id
              orderby ord.order_date descending select ord
             )
             .AsEnumerable()
             .Select(o => new { o.id,
                                date = Tools.toPersianDateTime((DateTime)o.order_date),
                                o.is_final, 
                                o.status, 
                                o.image_count, 
                                o.order_count, 
                                o.total_price }
                    );

这篇关于LINQ to Entities无法识别我的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆