我想在列表中添加一个范围,但在初始化它的同一行中,我也只是在同一行中对列表进行正常添加。
以前是:
List<Type> dto = new List<Type>();
dto.Add(sequence1);
dto.AddRange(sequence2); //sequence2 is also a list
我目前拥有的内容:
List<Type> dto = new List<Type> {sequence1};
dto.AddRange(sequence2);
我希望能够在同一行中执行AddRange,这可能吗?
答案 0 :(得分:3)
你试过这个吗?
List<Type> dto = new List<Type> (sequence2){sequence1};
它将使用sequence2
初始化dto并将sequence1
添加到集合的末尾
答案 1 :(得分:2)
您可以对构造函数的结果使用LINQ Concat
运算符:
List<int> l1 = new List<int>() { 1, 2 };
List<int> l2 = new List<int>() { 3, 4 };
List<int> r = new List<int>(l1).Concat(l2).ToList();
或者如果您只是使用单个元素elem
进行初始化,请选择以下选项之一:
List<int> r = new List<int>() { elem }.Concat(l2).ToList();
List<int> r = new[] { elem }.Concat(l2).ToList();
List<int> r = Enumerable.Repeat(elem, 1).ToList();
注意:,根据r
的进一步使用情况,您可以跳过ToList()
,因为IEnumerable
可能就足够了。
答案 2 :(得分:0)
如果它真的很重要那么你可以创建一个扩展,这将使它流畅,但你怎么只想在一行?
class Program
{
static void Main(string[] args)
{
List<int> l1 = new List<int>() { 3, 4 };
List<int> l2 = new List<int>() { 5, 6 };
var a = new List<int>() { 1, 2 }.FluentAddRange(l1).FluentAddRange(l2);
}
}
public static class Extensions
{
public static List<T> FluentAddRange<T>(this List<T> list, List<T> newList)
{
list.AddRange(newList);
return list;
}
}