1

我需要将 2 个字段合并为 1 个字段。名称和价格。但是,我收到一个 LINQ 错误

LINQ to Entities 无法识别方法“System.String ToString”

这是我的 linq 声明。

        var results = ctx.Plans.Select(p => new PlansView
        {
            PlanID = p.planID,
            PlanActive = p.planActive,
            PlanCost = p.planCost,
            PlanName = p.planName,
            PlanNameAndCost = p.planName + " " + Convert.ToString(p.planCost)
        }).OrderBy(p => p.planName).ToList();

PlanNameAndCost = p.planName + " " + Convert.ToString(p.planCost)导致错误。我知道 SQL 没有 ToString,但我怎样才能让它工作呢?

4

1 回答 1

2

PlanNameAndCost = p.planName + " " + Convert.ToString(p.planCost)导致错误。

这是意料之中的:投影是在 RDBMS 端执行的;您的 SQL 数据库不知道什么是ToString. 当你在内存中时,应该添加这个成员,即之后AsEnumerable()

var results = ctx.Plans.Select(p => new PlansView
    {
        PlanID = p.planID,
        PlanActive = p.planActive,
        PlanCost = p.planCost,
        PlanName = p.planName
    }).OrderBy(p => p.planName)
    .AsEnumerable().Select(p => new PlansView
    {
        PlanID = p.planID,
        PlanActive = p.planActive,
        PlanCost = p.planCost,
        PlanName = p.planName,
        PlanNameAndCost = p.planName + " " + Convert.ToString(p.planCost)
    ).ToList();
于 2012-09-27T03:14:32.680 回答