使用linq什么是最简单的方法来列出<long>列出<int>?</int> </long>

时间:2010-04-30 10:29:14

标签: linq

使用链接将长片列表转换为整数列表的最简单方法是什么?

我需要它作为一个列表,如果它不可能我想看到一个带有int数组或某种f int容器的解决方案。

4 个答案:

答案 0 :(得分:10)

你不需要LINQ。只需:

List<int> intlist = longlist.ConvertAll(x => (int)x);

如果你真的想要LINQ:

var intlist = longlist.Select(x => (int) x).ToList();

答案 1 :(得分:4)

更新:正如一些评论者所指出的,以下答案是错误的。如docs中所述,

  

如果无法将元素强制转换为类型TResult,则此方法将抛出   例外。

我怀疑,但我现在无法测试,这意味着任何可以隐式转换(例如intlong或子类型到超类型)都可以工作,而其他一切都会导致异常。特别是,即使是明确的演员表(例如longint)也会失败。

<强> / UPDATE

您需要了解数据丢失的可能性,因为某些long可能具有int支持范围之外的值。

        List<long> a = new List<long>();
        List<int> b = a.Cast<int>().ToList();

答案 2 :(得分:3)

var myIntList = myLongList.Select(x => (int)x).ToList();

不会处理大于long的{​​{1}}值可以正确保存的值,尽管实际上并没有任何解决方法。

答案 3 :(得分:-2)

longList.Select( i => (int)i);

很好,也很容易。