C# Freely convert between IList<T> and IEnumerable<T>
项目中有一处用到将List<T>连接起来。可是在调用Concat方法后,连接后结果却转换为 IEnumerable<T>,如何将其转换回来?
正在踌躇,忽然间一眼发现了IEnumerable接口竟然已经存在了转换方法:public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source);大喜!
附,一示例:
代码
IList<Student> studentList1 = new List<Student>();
Student s1 = new Student();
s1.ID = "1";
s1.Name = "张三";
studentList1.Add(s1);
IList<Student> studentList2 = new List<Student>();
Student s2 = new Student();
s2.ID = "2";
s2.Name = "李四";
studentList2.Add(s2);
List<Student> xxx = studentList1.ToList();
xxx.AddRange(studentList2.ToList());
int c1 = xxx.Count;
IList<Student> yyy = studentList1.Concat(studentList2).ToList<Student>();
int c2 = yyy.Count;
Student s1 = new Student();
s1.ID = "1";
s1.Name = "张三";
studentList1.Add(s1);
IList<Student> studentList2 = new List<Student>();
Student s2 = new Student();
s2.ID = "2";
s2.Name = "李四";
studentList2.Add(s2);
List<Student> xxx = studentList1.ToList();
xxx.AddRange(studentList2.ToList());
int c1 = xxx.Count;
IList<Student> yyy = studentList1.Concat(studentList2).ToList<Student>();
int c2 = yyy.Count;
网上示例地址
备注:在同事的提醒下,又发现一转换方法AddRange,并将其修改到示例代码中。