如何从长变量创建List <long>?</long>

时间:2014-07-02 08:40:52

标签: c# collections

如何将长变量转换为列表? 代码:

long taskId = long.Parse(LocalWorkListVM.ActiveTask.TaskId, CultureInfo.InvariantCulture);

我需要将其转换为List<long>,因为我们的某个方法需要传递一个列表。

3 个答案:

答案 0 :(得分:1)

所以你需要一个List<long>,但你只有一个变量。这很简单,您可以使用collection initializer语法:

List<long> longs = new List<long>{ taskId };

或更详细List.Add

List<long> longs = new List<long>();
longs.Add( taskId );

答案 1 :(得分:1)

试试这个:

List<long> somelist = new List<long>{long.Parse(LocalWorkListVM.ActiveTask.TaskId, CultureInfo.InvariantCulture)};

这将创建一个新的List并使用解析后的值初始化它。

答案 2 :(得分:0)

它真的需要是List吗?如果有办法修改该方法以接受IEnumerable事情会变得更容易和更清洁(或者如果IEnumerable还不够,可以考虑IList)。

因此,考虑到这一点,你有很多选择。

您可以使用Enumerable类'静态方法Repeat

Enumerable.Repeat(taskId, 1);

您可以编写自己的扩展方法:

static class IEnumerableExtensions
{
    public static IEnumerable<T> ToEnumerable<T>(this T item)
    {
        yield return item;
    }
}
// and use it as:
taskId.ToEnumerable()

当然,可以修改此扩展程序以返回ListIList或您确切需要的任何内容。

此外,您可能会创建一个新的函数重载,它需要一个long而不是List,在此处的某处:

public void MyMethod(List<long> list)
{
    // Do something
}

public void MyMethod(long item)
{
    MyMethod(new List<long>{ item });
}

最后,有一个名为params的好关键字:

public void MyMethod(params long[] items)
{
    // call to the previously mentioned extension method
    MyMethod(items.ToEnumerable());
}

public void MyMethod(IEnumerable<long> items)
{
    // Do stuff
}

此解决方案的优势在于可以使用单个long参数,逗号分隔的long参数或IEnumerable<long>