2016-10-25 11 views
-2

こんにちは、私はMVC5アプリケーションのC#でクエリでsql Groupを記述したいと思います。上の画像でグループBy query in mvc5

Groupby query in sql

私は私がSQLで書いたクエリでグループを持っています。私はC#フロントエンドで記述したいと思っています。

C# Code

私は、フロントエンドでクエリを記述してみました。しかし、私はイメージに記載されているエラーを取得しています。今私はC#でGroup Byクエリを書いて、各従業員をcountで表示したいとします(最初のイメージと同じ出力)。誰も私がこの問題を解決するのを助けることができますか?

私のViewModel(Dashnboardビューモデル)

public class DashboardViewmodel 
{ 
    public List<CustomerTypeCountModel> CustomerTypesCountModels { get; set; } 
    public List<View_VisitorsForm> Visits { get; set; } 
    public CustomerTypeViewModel CustomerTypeViewModels { get; set; } 
    public int sizingcount { get; set; } 
    public int Processingcount { get; set; } 

    //here i declared two properties 
    public string EmployeeName { get; set; } 
    public string EmployeeCount { get; set; } 
} 

マイコントローラー・コード

[HttpGet] 
public ActionResult SalesVisit() 
{ 
    return View(); 
} 

public ActionResult GetDatesFromSalesVisit(DashboardViewmodel dvm) 
{ 
    var fromdate = Convert.ToDateTime(dvm.CustomerTypeViewModels.FromDate); 
    var todate = Convert.ToDateTime(dvm.CustomerTypeViewModels.ToDate); 

    List<View_VisitorsForm> empcount = new List<View_VisitorsForm>(); 

    if (DepartmentID == new Guid("47D2C992-1CB6-44AA-91CA-6AA3C338447E") && 
     (UserTypeID == new Guid("106D02CC-7DC2-42BF-AC6F-D683ADDC1824") || 
     (UserTypeID == new Guid("B3728982-0016-4562-BF73-E9B8B99BD501")))) 

     { 

    var empcountresult = db.View_VisitorsForm.GroupBy(G => G.Employee) 
          .Select(e => new 
          { 
           employee = e.Key, 
           count = e.Count() 
          }).ToList(); 

     empcount = empcountresult ;//this line i am getting error 
} 
    DashboardViewmodel obj = new DashboardViewmodel(); 

    return View("SalesVisit", obj); 
} 
+1

また、画像としてポーズするのではなく、SQLとエラーメッセージを入力してください。 –

+1

ASP.NET MVCはWebフレームワークです。それはデータをグループ化することとは関係ありません。 –

答えて

4

あなたがGroupByを使用するときは、あなたが.Employee.VisitingID性質を持っていないIEnumerable<IGrouping<Key,YourOriginalType>>を取得します。次のように

変更:

public class EmployeeCount 
{ 
    public string Employee {get; set;} 
    public int Count {get; set;} 
} 

List<EmployeeCount> result = db.View_VisitorsForm 
       .Where(item => item.VisitingDate >= beginDate && item.VisitingDate < endDate) 
       .GroupBy(G => G.Employee) 
       .Select(e =>new EmployeeCount 
       { 
        employee = e.Key, 
        count = e.Count() 
       }).ToList(); 

//Now add the result to the object you are passing to the View 

また、あなたがそう追加FirstOrDefaultではまだ一人でempcountに結果を割り当てるタイプView_VisitorsFormが、匿名オブジェクトのオブジェクトをインスタンス化されていないこと

をコンパイルしないであろうことに留意してください

ビューにこの構造を渡してチェックを提示するにはthis question

+0

Gilad Green最初のイメージとして理解できません。各従業員にカウントを表示する必要があります。詳細を説明できますか。 – Swetha

+0

Gilafd Green計算された従業員とtherir counts。前と同じように私は従業員にフロントエンドでカウントを表示するのが好きです。 – Swetha

+0

@Swetha - これは上記のクエリが行うことです。それを実行して、 –

-1

希望助けてください

var query = db.View_VisitorsForm.Where(o => o.VisitingDate >= new DateTime(2016,10,01) && o.VisitingDate <= new DateTime(2016, 10, 30)).GroupBy(G => G.Employee) 

foreach (var item in query) 
       { 
        Console.WriteLine($"Employee Id {item.Key} : Count :{item.Count()}"); 
       } 
+0

Raghu私はビューコードが必要です – Swetha

+0

コメントを残してください。改善するのに役立ちます.. – Raghu