1

我想在列表中添加一个范围,但在初始化它的同一行内,我也只是在同一行内正常添加到列表中。

以前是:

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,这可能吗?

4

3 回答 3

4

你试过这个吗?

List<Type> dto = new List<Type> (sequence2){sequence1};

它将初始化 dtosequence2并添加sequence1到集合的末尾

于 2014-04-04T12:55:46.553 回答
2

Concat您可以对构造函数的结果使用 LINQ运算符:

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可能就足够了。

于 2014-04-04T12:58:36.700 回答
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;
    }
}
于 2014-04-04T13:16:26.880 回答