在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();

有办法我可以直接做到这一点吗?

我的意思是,而不是转换到列表,然后到对象数组,我可以直接填充对象数组,而不是对象列表??

在linq中填充对象列表到sql

是。可以用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();