相关疑难解决方法(0)

将单个项目作为IEnumerable <T>传递

是否有一种常见的方法将单个类型的项传递给T需要IEnumerable<T>参数的方法 ?语言是C#,框架版本2.0.

目前我正在使用一个辅助方法(它是.Net 2.0,所以我有一大堆类似于LINQ的转换/投射辅助方法),但这看起来很愚蠢:

public static class IEnumerableExt
{
    // usage: IEnumerableExt.FromSingleItem(someObject);
    public static IEnumerable<T> FromSingleItem<T>(T item)
    {
        yield return item; 
    }
}
Run Code Online (Sandbox Code Playgroud)

其他方式当然是创建和填充a List<T>或an Array而不是传递它IEnumerable<T>.

[编辑]作为扩展方法,它可能被命名为:

public static class IEnumerableExt
{
    // usage: someObject.SingleItemAsEnumerable();
    public static IEnumerable<T> SingleItemAsEnumerable<T>(this T item)
    {
        yield return item; 
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?

[Edit2]我们发现someObject.Yield()(正如@Peter在下面的评论中所建议的那样)是这个扩展方法的最佳名称,主要是为了简洁,所以如果有人想要抓住它的话,它会与XML注释一起:

public static class IEnumerableExt
{
    /// <summary>
    /// Wraps this object instance into an IEnumerable&lt;T&gt;
    /// consisting of a …
Run Code Online (Sandbox Code Playgroud)

.net c# generics ienumerable

357
推荐指数
14
解决办法
8万
查看次数

如何使用Entity框架进行递归加载?

我在带有TreeNodes表的DB中有一个树结构.该表有nodeId,parentId和parameterId.在EF中,结构类似于TreeNode.Children,其中每个子节点都是TreeNode ...我还有一个包含id,name和rootNodeId的Tree表.

在一天结束时,我想将树加载到TreeView中,但我无法想象如何一次加载它.我试过了:

var trees = from t in context.TreeSet.Include("Root").Include("Root.Children").Include("Root.Children.Parameter")
        .Include("Root.Children.Children")
                        where t.ID == id
                        select t;
Run Code Online (Sandbox Code Playgroud)

这将使我成为前两代而不是更多.如何使用所有代和其他数据加载整个树?

recursion entity load entity-framework

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

获取 LINQ 列表中的所有子项

我有一个大型后端数据库,它具有我正在使用的以下类结构:

public class InputClass
{
    public int id { get; set; }
    public string text { get; set; }
    public string icon { get; set; }
    public int? parentId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,每个元素都可以有一个父 ID,它最终会生成一个用户可以与之交互的树形信息列表。

使用以下示例数据作为示例:

var inputList = new List<InputClass>();
inputList.Add(new InputClass() { id = 1, text = "Item #1"});
inputList.Add(new InputClass() { id = 2, text = "Item #2" });
inputList.Add(new InputClass() { id = 3, text = "Item #3" });
inputList.Add(new InputClass() { id = 4, …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

标签 统计

c# ×2

.net ×1

entity ×1

entity-framework ×1

generics ×1

ienumerable ×1

linq ×1

load ×1

recursion ×1