.net 如何使用LINQ从数组中删除对象
我有一个类型为A的对象数组:.net 如何使用LINQ从数组中删除对象,.net,arrays,linq,.net,Arrays,Linq,我有一个类型为A的对象数组: A[]ar。 和整数列表: 列出索引 如何使用LINQ从ar中删除索引中具有索引的所有对象? 也就是说,我需要一个新的(更小的)数组,该数组不包含其索引位于索引中的对象。使用LINQ 保留对象的顺序是否与删除前相同 非常感谢。这可能看起来很奇怪,但它符合您的要求(它不是LINQ): var filtered=newlist(); 对于(变量i=0;i
A[]ar
。
和整数列表:
列出索引
如何使用LINQ从ar
中删除索引中具有索引的所有对象?
也就是说,我需要一个新的(更小的)数组,该数组不包含其索引位于索引中的对象。使用LINQ
保留对象的顺序是否与删除前相同
非常感谢。这可能看起来很奇怪,但它符合您的要求(它不是LINQ):
var filtered=newlist();
对于(变量i=0;i
如果你的整数列表很大,考虑使用<代码> HasSET/<代码>而不是列表来获得更多的性能
这看起来很奇怪,但是它符合你想要的(不是LINQ):
var filtered=newlist();
对于(变量i=0;i
如果你的整数列表很大,考虑使用<代码> HasStuts而不是列表来获得更多的性能
,你不能只修改它包含的元素。
但您可以轻松创建替换阵列:
myArray = myArray.Where(x => x.KeepThisElement).ToArray();
使用LINQ to对象(在本例中您将使用该对象),将当前索引传递给谓词的重载,其中
:
myArray = myArray.Where((x, idx) => !indexes.Conatins(idx)).ToArray();
不能仅修改数组包含的元素
但您可以轻松创建替换阵列:
myArray = myArray.Where(x => x.KeepThisElement).ToArray();
使用LINQ to对象(在本例中您将使用该对象),将当前索引传递给谓词的重载,其中
:
myArray = myArray.Where((x, idx) => !indexes.Conatins(idx)).ToArray();
是否要因此获得新阵列?数组是不可变的,您只能设置NULL而不是对数组的引用object@opewix仅仅设置null是不够的,我需要一个新的(更小的)数组,而不需要它们的索引在“索引”中的对象。你想得到一个新的数组吗?数组是不可变的,您只能设置NULL而不是对数组的引用object@opewix仅仅设置null是不够的,我需要一个新的(更小的)数组,它不包含索引位于“索引”中的对象。@openwix谢谢。。非linq版本确实非常简单。但是我想用LINQ查询做同样的事情。如果可能的话,当然。@openwix谢谢。。非linq版本确实非常简单。但是我想用LINQ查询做同样的事情。如果可能的话,当然。保留对象的顺序是否与删除前相同?谢谢。@Ilan是的,输入的可枚举项是按顺序处理的。剩余对象的顺序是否与删除前相同?谢谢。@Ilan是的,输入可枚举项按顺序处理。