我通常使用数组语法从单个值创建一个序列,如下所示:
IEnumerable<string> sequence = new string[] { "abc" };
Run Code Online (Sandbox Code Playgroud)
或使用新的列表.我想听听是否有人有更具表现力的方式来做同样的事情.
基本上我想尝试做这样的事情:
image.Layers
Run Code Online (Sandbox Code Playgroud)
除了图层之外的所有图层都返回IEnumerable Parent,但在某些情况下,我只想这样做:
image.Layers.With(image.ParentLayer);
Run Code Online (Sandbox Code Playgroud)
因为它只在少数几个地方使用,相比之下,通常使用的100s image.Layers.这就是为什么我不想创建另一个也返回Parent图层的属性.
我的C#程序中有一个整数列表.但是,我只在运行时知道列表中的项目数.
让我们说,为了简单起见,我的列表是{1,2,3}现在我需要生成所有可能的组合,如下所示.{1,2,3} {1,2} {1,3} {2,3} {1} {2} {3}
有人可以帮忙吗?
我正在使用实体框架(版本6)映射到递归层次结构,它很好地映射.
我的问题是我想以递归方式获取层次结构中特定节点的所有子节点.
我使用Linq很容易得到子节点:
var recursiveList = db.ProcessHierarchyItems
.Where(x => x.id == id)
.SelectMany(x => x.Children);
Run Code Online (Sandbox Code Playgroud)
有人知道一个干净的实现,会递归地让所有孩子?
我有类foo的例子,我想把它作为IEnumerable返回.我可以在不创建新列表的情况下执行此操作.
也许类似如下:
IEnumerable<foo>.fromInstance(foo)
Run Code Online (Sandbox Code Playgroud) 我很惊讶地发现似乎没有一种方法可以将单个元素添加到IEnumerable集合中.
如何将单个元素添加到IEnumerable集合中?
必须有一个很好的标准方法来做到这一点,但是我工作的每个项目我都必须编写自己的统一方法,或者创建一个内联数组等.
(我希望这会很快被关闭作为一个问题的副本,并对此有一些很好的答案)
我有一些问题,试图更新嵌套的for循环,而不是使用递归.使用递归时,是否可以从早期的for循环访问a,b和c变量?下面是我试图转换为递归调用的简单示例.
for(int a= 0; a < 10; a++)
{
for(int b = 0; b < 20; b++)
{
for(int c = 0; c < 10; c++)
{
int[] indexes = new int[3]{a,b,c}
collection.add(indexes);
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:解决方案需要能够在运行时进行调整,以便用户可以选择需要多少级别.
AsEnumerable的确切用途是什么?它会将非可枚举的集合更改为可枚举的集合吗?.请给我一个简单的例子.
说我需要返回一个仅包含一个元素的IEnumerable。
我可以像这样返回一个列表
return new List<Whatever> (myItem);
Run Code Online (Sandbox Code Playgroud)
或与此相关的数组。
但最好创建一个Singleton方法
public IEnumerable<T> Singleton (T t)
{
yield return t
}
Run Code Online (Sandbox Code Playgroud)
在将其放置到代码中之前,没有一种方法可以执行此操作吗?
c# ×11
.net ×5
ienumerable ×5
linq ×3
recursion ×2
c#-3.0 ×1
c#-4.0 ×1
casting ×1
combinations ×1
enumeration ×1
ienumerator ×1