我有2个IEnumerable集合.
IEnumerable<MyClass> objectsToExcept
Run Code Online (Sandbox Code Playgroud)
和
IEnumerable<MyClass> allObjects.
Run Code Online (Sandbox Code Playgroud)
objectsToExcept可能包含来自的对象allObjects.
我需要从中删除allObjects对象objectsToExcept.例如:
foreach (var myClass in objectsToExcept)
{
allObjects.Remove(myClass);
}
Run Code Online (Sandbox Code Playgroud)
要么
allObject.Except(objectsToExcept)
Run Code Online (Sandbox Code Playgroud)
但它不起作用.方法执行后的计数表示没有删除任何项目.
请建议一种最简单的方法,从具有'N'项的集合中获取计数'n'的随机混洗集合.其中n <= N
我有IEnumerable,其中包含数字数据.
编辑 IEnumerable来自System.Collection.Ienumerable指令.
附上了Viual Studio的snapShot,包含数据的枚举:
alt text http://www.freeimagehosting.net/uploads/bd72c6c310.jpg
为了简要介绍上面的图像,eLevelData是IEnumerable变量,我有我的数据.
现在我想转到索引4或5的数据,但我不想使用foreach循环.请给我任何建议.
谢谢,
Subhen
基本上我正在构建一个非常通用的T4模板,我需要它做的一件事就是打印variable.ToString().但是,我希望它通过它们来评估列表和foreach,而不是打印ListItem.ToString()My T4模板不知道variable提前的类型,这就是为什么这是如此通用.
但是我生成的当前代码如下所示:
if(variable!=null)
if(variable is IEnumerable) //error here
foreach(var item in variable)
Write(item.ToString());
Run Code Online (Sandbox Code Playgroud)
我在标记行上遇到编译器错误"使用泛型类型System.Generic.Collections.IEnumerable需要一个类型参数"
我实际上并不关心它是什么类型,我只是想知道你是否可以通过变量进行预测.我应该使用什么代码?
我有一个项目对象列表:
IEnumerable<Project> projects
Run Code Online (Sandbox Code Playgroud)
一个工程类的所谓财产标签.这是一个int []
我有一个名为filteredTags的变量,它也是一个int [].
所以我要说我的过滤标签变量如下所示:
int[] filteredTags = new int[]{1, 3};
Run Code Online (Sandbox Code Playgroud)
我想过滤我的列表(项目),只返回过滤器中列出的所有标签的项目(在这种情况下,至少标签1和标签属性中的标签 3 ).
我试图使用Where()和Contains(),但这似乎只有在我与单个值进行比较时才有效.我如何将列表与另一个列表进行比较,我需要匹配筛选列表中的所有项目?
在null对象上调用Any()时,它会在C#中抛出ArgumentNullException.如果对象为null,那么肯定没有'any',它应该返回false.
为什么C#以这种方式运行?
我想把IEnumerable<T>它分成固定大小的块.
我有这个,但由于所有列表创建/复制,它似乎不优雅:
private static IEnumerable<IEnumerable<T>> Partition<T>(this IEnumerable<T> items, int partitionSize)
{
List<T> partition = new List<T>(partitionSize);
foreach (T item in items)
{
partition.Add(item);
if (partition.Count == partitionSize)
{
yield return partition;
partition = new List<T>(partitionSize);
}
}
// Cope with items.Count % partitionSize != 0
if (partition.Count > 0) yield return partition;
}
Run Code Online (Sandbox Code Playgroud)
有没有更惯用的东西?
编辑:虽然这已被标记为Divide数组的副本到子序列数组的数组,但它不是 - 该问题涉及拆分数组,而这是关于IEnumerable<T>.此外,该问题要求填充最后一个子序列.这两个问题密切相关,但并不相同.
我有两套数据行.它们都是IEnumerable.我想将这两个列表追加/连接到一个列表中.我确信这是可行的.我不想做一个for循环,并注意到两个列表上有一个Union方法和一个Join方法.有任何想法吗?
我正在实现自己的ArrayList类,当我意识到这一点时,我感到很惊讶
public System.Collections.Generic.IEnumerator<T> GetEnumerator() {
return _array.GetEnumerator();
}
Run Code Online (Sandbox Code Playgroud)
没用.数组在.NET中不实现IEnumerator的原因是什么?
有没有解决方法?
谢谢
我有一个关于这个问题顺序在IEnumerable.
据我所知,迭代IEnumerable是伪代码可以用以下方式编写:
while (enumerable.HasNext())
{
object obj = enumerable.Current;
...
}
Run Code Online (Sandbox Code Playgroud)
现在,假设,需要对已排序的集合进行操作.可以在这种情况下使用IEnumerable,还是尝试IList使用索引支持的其他方法(即)?
换句话说:合同是否IEnumerable一般对订单作出任何保证?
因此,IEnumerable对于保证排序的通用接口而言,这不是一个合适的方法.新的问题是什么接口或类应该用于带有顺序的不可变集合?ReadonlyCollection?IList?它们都包含Add()方法(甚至没有在前者中实现).
我自己的想法:IEnumerable不对订购提供任何保证.正确的实现可以在不同的枚举中以不同的顺序返回相同的元素(考虑SQL查询)
我知道LINQ First(),但如果IEnumerable不说一下它的排序,这个扩展是没用的.
c# ×10
ienumerable ×10
.net ×4
linq ×4
collections ×2
arrays ×1
foreach ×1
generics ×1
ienumerator ×1
object ×1
silverlight ×1
tags ×1
unions ×1