2014-07-02 29 views
0

我如何将一个长变量转换成列表? 代码:如何从一个长变量创建一个列表<long>?

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

我需要将其转换成List<long>因为我们的方法的一个期望列表通过。

+0

你是什么意思'长'到'列表'? “List”是一个集合,“long”是一个单一的变量。 –

+0

什么意思_“转换成_”,你的意思是_add to_? –

+0

是的,long是一个变量。我需要将它转换成列表,因为我们的方法期望列表通过 – Sandeep

回答

1

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

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

或更详细的与List.Add

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

试试这个:

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

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

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>