2016-04-05 5 views
0

を発行する属性私が持っているものです。SelectListGroup名前はここで

今、このすべての作品
public static List<SelectListItem> lstDailySumAssignments() 
    { 
     List<SelectListItem> lstAssignments = new List<SelectListItem>(); 

     using(var context = new ConnectionString()) 
     { 
      List<table1> lstActivity = context.table1.Where(x => x.deleted == false).ToList(); 

      foreach(table1 activity in lstActivity) 
      { 
       SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = new SelectListGroup() { Name = activity.subcategory } }; 
       lstAssignments.Add(item); 
      } 
     } 

     return lstAssignments; 
    } 

。唯一の問題は、私はドロップダウンリストを作成するには、このを使用していますということで、これはビューでレンダリングするときには、次のようになります。これの代わりに

-Category 1 
    -value 1 
-Category 1 
    -value 2 
-Category 1 
    -value 3 
-Category 2 
    -value 4 
-Category 2 
    -value 5 
-Category 2 
    -value 6 

-Category1 
    -value 1 
    -value 2 
    -value 3 
-Category2 
    -value 4 
    -value 5 
    -value 6 

私が知っているforeachループは、これを引き起こしていますが、SelectListGroupNameプロパティを取得する方法が分かりません。個別のカテゴリに手動で入力する必要はありません。

したがって、foreachループの外側にSelectListGroupを作成し、すべての可能なCategory名前を収集するにはどうすればよいですか。

答えて

1

forループの前にすべての固有のカテゴリを見つけ、各SelectListGroupを各グループに対して1回だけ作成する必要があります。 このようなものが動作するはずです:

var groups = lstActivity.GroupBy(a => a.subcategory); 
foreach (var @group in groups) 
{ 
    var slg = new SelectListGroup() {Name = @group.Key}; 

    foreach (table1 activity in @group) 
    { 
     SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = slg }; 
     lstAssignments.Add(item); 
    } 
} 
+0

パーフェクト!どうもありがとうございます! –

関連する問題