使用LINQ按实体分组

PSR*_*PSR 0 c# linq asp.net-mvc

我有这样的实体

class Test
    {
        string Name;
        IList<SubTest> subTest;
    }

class SubTest
{
    string Id;
    string value;
}
Run Code Online (Sandbox Code Playgroud)

从服务器我会得到的结果IEnumerable<Test>.我想要将此结果转换为SelectListItem,以便我可以将其绑定到mvc下拉列表.

像这样的东西

new SelectListItem(){Group=Test.Name, Value=SubTest.Id, Text= subTest.Value}
Run Code Online (Sandbox Code Playgroud)

如何使用linq获得此结果?

ViR*_*iTy 5

使用Select()SelectMany()将数据转换为SelectListItem

System.Collections.Generic.IEnumerable<Test> lResultFromServer = ...;

var lSelectListItems = lResultFromServer.SelectMany(s =>
  s.subTest.Select(st => new System.Web.Mvc.SelectListItem {
    Group = new System.Web.Mvc.SelectListGroup {Name = s.Name},
    Value = st.Id,
    Text = st.value
  })
);
Run Code Online (Sandbox Code Playgroud)