Tom*_*len 1 c# asp.net listcontrol
我有这个:
// Load changelog types
ChangeLogType[] Types = ChangeLogFunctions.GetAllChangelogTypes();
foreach(ChangeLogType Rec in Types){
ListItem N = new ListItem();
N.Text = Rec.Type;
N.Value = Rec.ID.ToString();
LstChangeLogType.Items.Add(N);
}
Run Code Online (Sandbox Code Playgroud)
它调用一个返回ChangeLogTypes数组的函数,然后将每个函数添加到列表控件中.有更优雅的方式吗?我觉得我每次做这个或类似的东西都会重复代码.
是的,LINQ to Objects是你的朋友:
var changeLogTypes = ChangeLogFunctions.GetAllChangelogTypes()
.Select(x => new ListItem {
Text = x.Type,
Value = x.ID.ToString() })
.ToList();
Run Code Online (Sandbox Code Playgroud)
该Select部分将每个投影ChangeLogType到a ListItem,ToList()并将得到的序列转换为a List<ListItem>.
这假设你真的想要一个包含所有这些条目的新列表.如果您需要将结果添加到现有列表中,您可以在没有ToList调用的情况下执行此操作,而是使用调用AddRange结果调用现有列表Select.
非常值得学习更多关于LINQ的信息,特别是LINQ to Objects - 它可以使这类事情变得更加简单.