我想用lambda ForEach中的if语句创建新对象,这是什么代码问题?
List<tblUsersTypeC> usertype = new List<tblUsersTypeC>();
usertype.Add(userToInsertList.ForEach(o =>
{
if ((o.Counts.FollowedBy + o.Counts.Follows + o.Counts.Media) == 0)
new tblUsersTypeC { isPrivite = true, UserName = o.Username, WebsiteUrl = o.Website };
else
new tblUsersTypeC { isPrivite = false, UserName = o.Username, WebsiteUrl = o.Website };
}));
答案 0 :(得分:2)
List<T>.ForEach
旨在迭代列表项并使用其当前状态执行某些操作。实际上,您的问题是另一个示例,它表明,ForEach
方法对于foreach
运算符来说是不自然的,非显而易见的替代。
要根据当前列表中的项目获取新的项目列表,请使用Select
/ ToList
扩展名:
var usertype = userToInsertList
.Select(o => new tblUsersTypeC
{
isPrivite = (o.Counts.FollowedBy + o.Counts.Follows + o.Counts.Media) == 0,
UserName = o.Username,
WebsiteUrl = o.Website
})
.ToList();
答案 1 :(得分:1)
试试这个:
List<tblUsersTypeC> usertype = userToInsertList.Select(o => new tblUsersTypeC()
{
isPrivite = ((o.Counts.FollowedBy + o.Counts.Follows + o.Counts.Media) == 0),
UserName = o.Username,
WebsiteUrl = o.Website
}).ToList();
答案 2 :(得分:0)
使用
userToInsertList.Select( o=> (condition) ? value1: value2);
或
userToInsertList.Select( o=> { if(condition) { return value1} else {return value2;}});
List.ForEach不会返回任何内容。