0

LINQtoEntitiesでこのエラーが発生します。LINQtoEntitiesはメソッド'System.StringToString()'メソッドを認識しません。
この一般的な問題をどのように解決すればよいですか?

FleetViewModel.DWTStartは文字列であり、fleet.DWTStartはnull許容の10進数であることに注意してください。

            var qry = from fleet in _entitiesContext.Fleets
                  select new FleetViewModel
                  {
                      FleetID = fleet.FleetID,
                      FleetName = fleet.FleetName,
                      DWTStart = fleet.DWTStart.HasValue?fleet.DWTStart.Value.ToString():"",
                      DWTEnd = fleet.DWTEnd.HasValue ? fleet.DWTEnd.Value.ToString() : ""
                  };

ありがとう。

4

1 に答える 1

2

基本的に、プロセスの最後の部分を実行する必要があります。これは、次のコマンドで強制できますAsEnumerable

var qry = _entitiesContext.Fleets
    .Select(fleet => new { fleet.FleetID,
                           fleet.FleetName,
                           fleet.DWTStart,
                           fleet.DWTEnd })
    .AsEnumerable() // Do the rest in-process
    .Select(fleet => new FleetViewModel {
        FleetID = fleet.FleetID,
        FleetName = fleet.FleetName,
        DWTStart = fleet.DWTStart.HasValue?fleet.DWTStart.Value.ToString():"",
        DWTEnd = fleet.DWTEnd.HasValue ? fleet.DWTEnd.Value.ToString() : ""
     });

これらの4つのプロパティ以外にエンティティに何もない場合は、最初に匿名型をスキップできます。これは、不要なデータのフェッチを回避するために実際に存在するだけです。

var qry = _entitiesContext.Fleets
    .AsEnumerable() // Do the rest in-process
    .Select(fleet => new FleetViewModel {
        FleetID = fleet.FleetID,
        FleetName = fleet.FleetName,
        DWTStart = fleet.DWTStart.HasValue?fleet.DWTStart.Value.ToString():"",
        DWTEnd = fleet.DWTEnd.HasValue ? fleet.DWTEnd.Value.ToString() : ""
     });
于 2012-09-14T11:55:20.173 に答える