使用链接将长片列表转换为整数列表的最简单方法是什么?
我需要它作为一个列表,如果它不可能我想看到一个带有int数组或某种f int容器的解决方案。
答案 0 :(得分:10)
你不需要LINQ。只需:
List<int> intlist = longlist.ConvertAll(x => (int)x);
如果你真的想要LINQ:
var intlist = longlist.Select(x => (int) x).ToList();
答案 1 :(得分:4)
更新:正如一些评论者所指出的,以下答案是错误的。如docs中所述,
如果无法将元素强制转换为类型TResult,则此方法将抛出 例外。
我怀疑,但我现在无法测试,这意味着任何可以隐式转换(例如int
到long
或子类型到超类型)都可以工作,而其他一切都会导致异常。特别是,即使是明确的演员表(例如long
到int
)也会失败。
<强> / 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);
很好,也很容易。