1

首先,我想向你们所有人道歉,因为我知道这个问题已经被问过很多次了。但我对 MVC 或 .NET 或 Lambda 表达式本身了解不多。我正在做一个小项目,但我遇到了 Lambda 表达式错误,如下所示 在此处输入图像描述

编辑 下面是控制器代码

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC4Trial.Models;
using Kendo.Mvc.UI;
using Kendo.Mvc.Extensions;

namespace MVC4Trial.Controllers
{
    public partial class CallTrackController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult Remote_Data()
        {
            return View("AjaxBinding");
        }

        public ActionResult vwCallDetails([DataSourceRequest] DataSourceRequest request)
        {

            return Json(GetCallDetailsFn().ToDataSourceResult(request));
        }

        private static IEnumerable<CallDetails> GetCallDetailsFn()
        {
            var callData = new CallTrackClassDataContext();
            return callData.CallDetails.Select(calldetail => new CallDetails
            {
                CCCID = calldetail.CCCID,
                Mp3_Url = calldetail.Mp3_Url,
                Index = calldetail.Index,
                Target_Number = calldetail.Target_Number,
                Duration = calldetail.Duration,
                LocalTime = calldetail.LocalTime,
                Site_Name___Address = calldetail.Site_Name___Address,
                Ad_Source_Name = calldetail.Ad_Source_Name,
                Tracking_Number = calldetail.Tracking_Number,
                Caller_Number = calldetail.Caller_Number,
                Available_Feature = calldetail.Available_Feature


            });
        }


     }
}

我想学习如何解决这个错误。我在这里想念什么?我需要对我的模型/视图/任何其他文件进行任何类型的更改吗?感谢阅读和帮助。

4

1 回答 1

3

有什么问题Duration。它带有红色下划线,表示它在类中不存在,或者其他一些问题导致它无法被识别。由于此处存在错误,因此 lambda 表达式无法正确处理,只有这样 Visual Studio 才会识别出错误。本质上,报告的错误掩盖了真正的问题。修复Duration或删除它,lambda 表达式就可以了。

尽管如此,你所做的事情并没有多大意义。callData.CallDetails 已经返回了一个实例CallDetails(或者至少应该返回,或者您应该更改名称),因此使用从实例Select返回CallDetails填充的实例CallDetails是多余的。

更新

抱歉没有更清楚。我的最后一条评论真的取决于我看不到的代码中到底发生了什么。所以有两种可能的情况:

1)callData.CallDetails是 的一个实例CallDetails。如果是这种情况,那么使用Select就是浪费时间和代码,因为您所做的只是将一个实例转换CallDetails为另一个实例。只是做return callData.CallDetails;会有同样的效果。

2 )callData.CallDetails不是. _ CallDetails如果是这种情况,那么您应该简单地重命名CallDetails成员callData以避免首先引起我评论的那种混淆。

FWIW:如果您真的需要将其他类型映射到这样的实例CallDetails,您应该查看AutoMapper。编写此代码不仅重复且耗时,而且还会使自己更容易出错。例如,如果您稍后更改 的定义CallDetails怎么办?您现在必须像这样跟踪每个显式映射并对其进行更改,而使用 AutoMapper,您可能只需更改定义即可完成。

于 2013-02-14T21:23:26.580 回答