在linq中填充对象列表到sql

时间:2014-07-17 04:57:29

标签: c# asp.net linq

我有一个linq to 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();

我正在使用此方法中的代码段将其转换为对象列表

Student[] objects = list.ConvertAll<Student>(item => (Student)item).ToArray();

有没有办法可以直接这样做?

我的意思是不是转换为list而是转换为对象数组而不是直接填充对象数组而不是对象列表?

3 个答案:

答案 0 :(得分:2)

是。您可以拨打ToArray()而不是ToList()。为了成为一个数组,查询将执行完全相同的。

我应该注意到,对于很多情况ToList can be slightly more preformant,并且在极少数情况下,明显更多的情况。

你很可能从一个方法返回这个,但是在这个方法签名中,我强烈地鼓励返回值为IEnumerable<Student>ImmutableList<Student>(在后一种情况下你调用.ToImmutableList())。返回ListIList,甚至更小程度的数组意味着您希望用户修改该集合,而我推荐的那两个不会。只要您的查询在返回之前已经进行了评估,就没有任何负面影响。

答案 1 :(得分:1)

致电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();

答案 2 :(得分:1)

直接你可以返回数组

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