如何将长变量转换为列表? 代码:
long taskId = long.Parse(LocalWorkListVM.ActiveTask.TaskId, CultureInfo.InvariantCulture);
我需要将其转换为List<long>
,因为我们的某个方法需要传递一个列表。
答案 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()
当然,可以修改此扩展程序以返回List
或IList
或您确切需要的任何内容。
此外,您可能会创建一个新的函数重载,它需要一个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>
。