我按照strings
strings
的列表进行排序
List<string> lstCategories = new List<string>() { "string1", "string2", "string3"};
var groups = lstActivity.OrderBy(x => x.codeAC.Text).ThenBy(x => x.text).GroupBy(x => lstCategories.IndexOf(x.codeAC.Text));
foreach(var group in groups)
{
var slg = new SelectListGroup() { Name = group.Key.ToString() }; //problem is here
foreach(codeAC activity in group)
{
SelectListItem item = new SelectListItem() { Text = activity.text, Value = activity.ID.ToString(), Group = slg };
lstAssignments.Add(item);
}
}
这个输出是:
- 2 // I need this to be the text & not the index position
* text1
* text2
- 1
* text3
* text4
- 3
* text5
* text6
// so on and so on
组是列表lstCategories
的文字索引位置 ..如何将其添加到选择文本并将其用作组而不是索引位置?
谢谢。
答案 0 :(得分:1)
您正在将分组与订购混合。分组后,您可以根据需要订购组和组元素。在您的示例中,不仅组密钥不是您想要的,而且结果也不是有序的(2,1,3)。
以下是执行您想要的查询:
var groups = lstActivity.OrderBy(x => x.codeAC.Text).ThenBy(x => x.text)
.GroupBy(x => x.codeAC.Text)
.OrderBy(g => lstCategories.IndexOf(g.Key));
当然只使用
var slg = new SelectListGroup() { Name = group.Key };