在linq中填充对象列表到sql
本文关键字:列表 sql 对象 填充 linq | 更新日期: 2023-09-27 18:13:19
我有一个linq到sql创建一个对象列表
List<Student> Student= playerpoints.AsEnumerable()
.GroupBy(r => new { Name = r.Field<string>("ID"), Action = r.Field<string>("Name") })
.Select(grp => new Student
{
AwardName = grp.Key.Action,
Count = grp.Count()
}).ToList();
,我将它转换成对象列表,在这个方法中使用snippet
Student[] objects = list.ConvertAll<Student>(item => (Student)item).ToArray();
有办法我可以直接做到这一点吗?
我的意思是,而不是转换到列表,然后到对象数组,我可以直接填充对象数组,而不是对象列表??
是。可以用ToArray()
代替ToList()
。为了成为一个数组,查询将完全相同地执行。
我应该注意到,在许多情况下,ToList
可以稍微更好,在极少数情况下明显更好。
您可能会从方法返回此值,但在此方法签名I 强烈鼓励返回值为IEnumerable<Student>
或ImmutableList<Student>
(在后一种情况下,您调用.ToImmutableList()
)。返回一个List
、一个IList
,或者在较小程度上返回一个数组,这意味着您希望用户修改该集合,而我推荐的这两个数组则不需要。只要你的查询在你返回之前已经评估过,那么这样做就没有负面影响。
调用ToArray
代替ToList
Student[] objects = playerpoints.AsEnumerable()
.GroupBy(r => new { Name = r.Field<string>("ID"), Action = r.Field<string>("Name") })
.Select(grp => new Student
{
AwardName = grp.Key.Action,
Count = grp.Count()
}).ToArray();
可以直接返回数组
string[] Student= playerpoints.AsEnumerable()
.GroupBy(r => new { Name = r.Field<string>("ID"), Action = r.Field<string>("Name") })
.Select(grp => new Student
{
AwardName = grp.Key.Action,
Count = grp.Count()
}).ToArray();