1

まず、この質問が何度も聞かれていることを知っているので、皆さんに謝罪したいと思います。しかし、MVC、.NET、または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ます。赤で下線が引かれているのは、クラスに存在しないか、他の問題が原因で認識されていないことを示しています。ここにエラーがあるため、ラムダ式は正しく処理されず、VisualStudioがエラーを認識するのはそのときだけです。基本的に、報告されたエラーは真の問題を覆い隠しています。修正Durationまたは削除すると、ラムダ式で問題ありません。

しかし、それが価値があることについては、あなたがしていることはあまり意味がありません。callData.CallDetails はすでにのインスタンスを返しますCallDetails(または少なくともそうする必要があります。名前を変更する必要があります)。したがって、のインスタンスから入力されたSelectインスタンスを返すためにを使用することは不要です。CallDetailsCallDetails

アップデート

はっきりしないことをお詫びします。私の最後のコメントは、私が見ることができないコードで正確に何が起こっているかに本当に依存しています。したがって、2つのシナリオが考えられます。

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 に答える