2017-10-24 21 views
1

私のプロジェクトにはモデルがあります。ここではモデルリストに追加する方法

public partial class Logging 
{ 
    public string Imei { get; set; } 
    public DateTime CurDateTime { get; set; } 
    public Nullable<System.DateTime> GPSDateTime2 { get; set; } 
    public Nullable<decimal> Latitude2 { get; set; } 
    public Nullable<decimal> Longitude2 { get; set; } 
    public string Speed { get; set; } 
    public Nullable<int> Datatype { get; set; } 
    public int Id { get; set; } 
    [NotMapped] 
    public TimeSpan? FirstStartDifference 
    { 
     get 
     { 
      if (CurDateTime != null) 
      { 
       var midnight = new DateTime(CurDateTime.Year, CurDateTime.Month, CurDateTime.Day, 00, 00, 00); 
       var difference = CurDateTime - midnight; 
       return difference; 
      } 
      return null; 
     } 
    } 
    [NotMapped] 
    public TimeSpan? LastStartDifference 
    { 
     get 
     { 
      if (CurDateTime != null) 
      { 
       var midnight = new DateTime(CurDateTime.Year, CurDateTime.Month, CurDateTime.Day, 23, 59, 00); 
       var difference = midnight - CurDateTime; 
       return difference; 
      } 
      return null; 
     } 
    } 
    [NotMapped] 
    public int coeff = 2; 
} 

のコードは、私は、データベースからいくつかのアイテムを取得する必要があり、それはDatatype==1と最終Datatype ==2最初のエントリ、です。

だから、私はリストにfirstitemlastitemを追加する必要があり、この後

public JsonResult GetStops() 
{ 
    using (var ctx = new GoogleMapTutorialEntities()) 
    {  
     var firstitem = ctx.Loggings.Where(x => x.Datatype == 2).AsEnumerable().Select(
       x => new 
       { 
        lng = x.Longitude2, 
        lat = x.Latitude2, 
        difference = (int)(x.FirstStartDifference?.TotalMinutes ?? -1) * x.coeff 
       }).FirstOrDefault(); 
     var lastItem = ctx.Loggings.Where(x => x.Datatype == 2).AsEnumerable().Select(
       x => new 
       { 
        lng = x.Longitude2, 
        lat = x.Latitude2, 
        difference = (int)(x.LastStartDifference?.TotalMinutes ?? -1) * x.coeff 
       }).LastOrDefault(); 
     List<Logging> items = new List<Logging> {firstitem, lastItem}; 
     return Json(firstitem, JsonRequestBehavior.AllowGet); 
    } 
} 

バックエンドでこのメソッドを書きます。

私はこのList<Logging> items = new List<Logging> {firstitem, lastItem};

のようにそれを書くしかし、私は

重大度コード説明プロジェクトファイルの行の抑制状態 エラーCS1950最良のオーバーロードされたAddメソッド「List.Add(ログ)」のエラーを取得しますコレクションイニシャライザに無効な引数がいくつかありますヒートマップC:¥Users¥nemes¥source¥repos¥Heatmap¥Heatmap¥Controllers¥HomeController.cs 37 重大度コード説明プロジェクトファイル行抑制状態 エラーCS1503引数1: '' 'Heatmap.Models.Logging'へ「ヒートマップC:私はリストに追加することができますどのようにこのList<Logging> items = new List<Logging> {firstitem, lastItem};

ためHomeController.cs 37

アクティブ\ \ Users \ユーザーネメス\ソース\リポジトリの\ヒートマップ\ヒートマップ\コントローラ?

答えて

3

Loggingの代わりに匿名型を返します。 firstitemおよびlastItemAnonymous Typesです。

x => new Logging 
{ 
    Longitude2 = x.Longitude2, 
    Latitude2 = x.Latitude2, 
    //And other properties 
} 

をそして、あなたはまだエラーが出るならば、あなたはLoggingエンティティから必要なプロパティを持つDTOクラスを作成する必要がありますが、マッピングされたエンティティに投影することはできませんので、おそらくそれは、次のとおりです:このようにコードを変更し

public class LoggingDTO 
{ 
    public string Longitude2 { get; set; } 
    public string Latitude2 { get; set; } 
    //And other properties 
} 
その後

x => new LoggingDTO 
+0

クエリに意味ですか? –

+0

@ S.Eはい。 'x => new'の代わりに' firstitem'と 'lastitem'に' x => new Logging'を使用してください。DTOクラスの使用に関する私の更新された答えを確認してください。 –

+0

= x.Longitude2'、重大\tコード\t説明\tプロジェクト\tファイル\tライン\t抑制状態 エラー\t CS0117 \t「ロギング」 'の定義が含まれていません、私はそれを使用しようとするが、私はこの 'LNGのエラーを持っていますlng '\tヒートマップ\t C:\ Users \ nemes \ source \ repos \ヒートマップ\ヒートマップ\ Controllers \ HomeController.cs アクティブ –

関連する問題