如何创建一个列表从一个长变量

本文关键字:一个 变量 long 何创建 列表 创建 | 更新日期: 2023-09-27 18:11:10

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

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

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

如何创建一个列表<long>从一个长变量

所以你需要一个List<long>,但你只有一个变量。这很简单,您可以使用集合初始化器语法:

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

或更详细的List.Add:

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

试试这个:

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

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

真的需要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>