ald*_*osa 4 c# linq generics entity-framework tuples
我正在尝试将一个额外的参数添加到ef对象列表中以跟踪处理,但我仍然不得不明确地初始化每个列表项.这样做的正确方法是什么?除了简洁之外,在这种情况下linq语法是否有任何优势?
List<app_subjects> subjectList = AppMySQLQueries.GetAllSubjects();
List<Tuple<app_subjects, bool>> subjectCollection = new List<Tuple<app_subjects, bool>>(subjectList.Count);
foreach (app_subjects subject in subjectList)
{
subjectCollection.Add(Tuple.Create(subject, false));
}
Run Code Online (Sandbox Code Playgroud)
我搜索了网站但没有成功.
eva*_*nal 13
您只想在此处使用投影(Select
),它将lambda表达式中的变换应用于源集合中的每个元素.
List<Tuple<app_subjects, bool>> tuples = subjectList.Select(x => new Tuple<app_subjects, bool>(x, false)).ToList();
Run Code Online (Sandbox Code Playgroud)
该ToList()
呼叫不是完全必要的,如果你删除它,然后该方法将返回IEnumerable<Tuple<app_subjects, bool>>
.如果你只是在事后迭代元组的集合的ToList
通话应该被删除,因为它会强制执行(枚举IEnumberable
),然后你的下一个操作(的foreach)会做同样的,使得代码执行雪上加霜.
像这样?
subjectList.Select(s => Tuple.Create(s, false)).ToList();
Run Code Online (Sandbox Code Playgroud)