我有一个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而是转换为对象数组而不是直接填充对象数组而不是对象列表?
答案 0 :(得分:2)
是。您可以拨打ToArray()
而不是ToList()
。为了成为一个数组,查询将执行完全相同的。
我应该注意到,对于很多情况ToList
can be slightly more preformant,并且在极少数情况下,明显更多的情况。
你很可能从一个方法返回这个,但是在这个方法签名中,我强烈地鼓励返回值为IEnumerable<Student>
或ImmutableList<Student>
(在后一种情况下你调用.ToImmutableList()
)。返回List
,IList
,甚至更小程度的数组意味着您希望用户修改该集合,而我推荐的那两个不会。只要您的查询在返回之前已经进行了评估,就没有任何负面影响。
答案 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();