相关疑难解决方法(0)

从单个值创建新的IEnumerable <T>序列的最佳方式?

我通常使用数组语法从单个值创建一个序列,如下所示:

IEnumerable<string> sequence = new string[] { "abc" };
Run Code Online (Sandbox Code Playgroud)

或使用新的列表.我想听听是否有人有更具表现力的方式来做同样的事情.

c# linq c#-3.0

93
推荐指数
4
解决办法
8万
查看次数

是否有Linq方法将单个项添加到IEnumerable <T>?

基本上我想尝试做这样的事情:

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图层的属性.

.net c# ienumerable

54
推荐指数
7
解决办法
2万
查看次数

为什么BCL Collections使用struct枚举器而不是类?

我们都知道可变结构一般是邪恶的.我也非常确定因为IEnumerable<T>.GetEnumerator()返回类型IEnumerator<T>,结构会立即被装入引用类型,比它们只是引用类型的开销要多得多.

那么为什么在BCL泛型集合中,所有枚举器都是可变结构?当然必须有一个很好的理由.我唯一想到的就是可以轻松复制结构,从而在任意点保留枚举器状态.但是Copy()IEnumerator接口上添加一个方法本来就不那么麻烦了,所以我不认为这本身就是一个逻辑上的理由.

即使我不同意设计决定,我也希望能够理解它背后的原因.

.net c# ienumerator base-class-library

53
推荐指数
2
解决办法
4853
查看次数

值列表的所有可能组合

我的C#程序中有一个整数列表.但是,我只在运行时知道列表中的项目数.

让我们说,为了简单起见,我的列表是{1,2,3}现在我需要生成所有可能的组合,如下所示.{1,2,3} {1,2} {1,3} {2,3} {1} {2} {3}

有人可以帮忙吗?

c# combinations

32
推荐指数
6
解决办法
7万
查看次数

递归层次结构 - 使用Linq的递归查询

我正在使用实体框架(版本6)映射到递归层次结构,它很好地映射.

我的问题是我想以递归方式获取层次结构中特定节点的所有子节点.

我使用Linq很容易得到子节点:

var recursiveList = db.ProcessHierarchyItems
            .Where(x => x.id == id)
            .SelectMany(x => x.Children);
Run Code Online (Sandbox Code Playgroud)

有人知道一个干净的实现,会递归地让所有孩子?

c# linq recursion entity-framework

24
推荐指数
2
解决办法
4万
查看次数

将单个实例对象作为IEnumerable返回

我有类foo的例子,我想把它作为IEnumerable返回.我可以在不创建新列表的情况下执行此操作.

也许类似如下:

IEnumerable<foo>.fromInstance(foo)
Run Code Online (Sandbox Code Playgroud)

c# ienumerable casting

17
推荐指数
3
解决办法
1万
查看次数

将单个元素添加到IEnumerable集合的最佳方法是什么?

我很惊讶地发现似乎没有一种方法可以将单个元素添加到IEnumerable集合中.

如何将单个元素添加到IEnumerable集合中?

.net c# ienumerable

11
推荐指数
4
解决办法
2万
查看次数

如何将类型T的单个值转换为IEnumerable <T>?

必须有一个很好的标准方法来做到这一点,但是我工作的每个项目我都必须编写自己的统一方法,或者创建一个内联数组等.

(我希望这会很快被关闭作为一个问题的副本,并对此有一些很好的答案)

.net c# linq ienumerable

10
推荐指数
3
解决办法
4943
查看次数

递归代替多个嵌套for循环?

我有一些问题,试图更新嵌套的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)

编辑:解决方案需要能够在运行时进行调整,以便用户可以选择需要多少级别.

c# recursion c#-4.0

4
推荐指数
2
解决办法
3191
查看次数

C# - AsEnumerable示例

AsEnumerable的确切用途是什么?它会将非可枚举的集合更改为可枚举的集合吗?.请给我一个简单的例子.

c# enumeration

2
推荐指数
2
解决办法
1万
查看次数

我如何枚举一件物品

可能的重复项:
如何创建单例IEnumerable?
从单个值创建新的IEnumerable <T>序列的最佳方法?

说我需要返回一个仅包含一个元素的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)

在将其放置到代码中之前,没有一种方法可以执行此操作吗?

.net c# ienumerable

2
推荐指数
1
解决办法
828
查看次数