我有这个:
// 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);
}
它调用一个返回 ChangeLogTypes 数组的函数,然后将每个类型添加到列表控件中。有没有更优雅的方式来做到这一点?我觉得每次执行此操作或类似操作时我都在重复代码。
最佳答案
是的,LINQ to Objects 是您的 friend :
var changeLogTypes = ChangeLogFunctions.GetAllChangelogTypes()
.Select(x => new ListItem {
Text = x.Type,
Value = x.ID.ToString() })
.ToList();
Select
部分投影每个 ChangeLogType
到 ListItem
, 和 ToList()
将结果序列转换为 List<ListItem>
.
这是假设您真的想要一个包含所有这些条目的新 列表。如果您需要将结果添加到现有 列表,您可以在没有 ToList
的情况下执行此操作打电话,但调用AddRange
在现有列表中,结果为 Select
打电话。
学习更多关于 LINQ 的知识,特别是 LINQ to Objects 是非常值得的 - 它可以使诸如此类的各种事情变得更加简单。
关于c# 将数组分配给列表的更优雅的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335061/