2016-12-27 5 views
0

私は、3つの列が他のテーブルのいくつかの条件に基づいてフェッチされるEFクエリを持っています。出力列はID、月、収益です。この情報をViewに表示したいのですが、どうしたらいいですか?ViewModelへのEFクエリ値

私はここでViewModelを使用する知識がありません。 クエリは次のとおりです。

var serviceList1 = (from p in dbObj.ServiceWiseRevenues 
           group p by new { p.service_id, p.pdate.Month } into g 
           select new 
           { 
            ID = g.Key.service_id, 
            Month = g.Key.Month, 
            Revenue = g.Sum(c => c.total_revenue/c.tbService.tbCountry.CountryCurrencyConversionRate) 
           }).OrderByDescending(x => x.Month).ToList();  
      return View(serviceList1); 

答えて

0

serviceList1は匿名オブジェクトのリストです。それらの型は.NETランタイムによって生成されるため、Viewでそれらを使用することは自明ではありません。

select new RevByMonth 
{ 
    ID = g.Key.service_id, 
    Month = g.Key.Month, 
    Revenue = g.Sum(...) 
} 

が最後にタイプRevByMonthを指定:

public class RevByMonth 
{ 
    int ID { get; set; }, 
    int Month { get; set; }, 
    double Revenue { get; set; }, 
} 

そしてこれにselect new { ... }部品を交換:

ベター(おそらくフォルダ/Modelsで)このようなのViewModelクラスを定義することです表示のモデル:

@model List<RevByMonth> 
// rest of View code, e.g. foreach (var revenue in Model) ... 
+0

こんにちはPeter tha nksは迅速な返信をたくさんしています。あなたが言ったように自分のコードを変更しましたが、IDとRevenueにデータ型変換エラーがあります。 – Guri

+0

IDの場合、暗黙的に型intを変換することはできませんか? intに、そしてRevenueには2倍に?倍増する – Guri

+0

これは最も基本的なものです。私のクラスは単なる例であり、ほとんどの場合、データベースから取得する型を使用する必要があることに注意してください。 IDの場合、null可能なint(または 'int?')である可能性は疑問ですが、クラス内で 'int'を使用し、' ID = g.Key.service_id.Value'を使用してください。割り当てのために。これは、ほとんどすべての通常のシナリオで必要なIDを持つアイテムがすべて存在する場合に有効です。 –

関連する問題