在linq列表中列出 - 它是什么?

时间:2010-05-20 04:45:15

标签: c# linq

我的朋友正在讨论LINQ中嵌套的对象列表,当我问这是什么意思时,他们笑了:(

这里的任何人都可以告诉嵌套列表是什么。是否像列表中的列表一样?感谢所有帮助我的人

这是NestedList吗?

public class X
{
public Y[] y { get; set; }   
}

public class Y
{
int id { get; set; }
}

2 个答案:

答案 0 :(得分:4)

是的,它听起来像列表中的列表,例如:

List<List<int>>

虽然嘲笑你并不好 - 它可能表明你的代码更好地组织成逻辑类。通常应避免使用此类构造 - 您可能不希望公开或使用类型过于复杂的接口,但通常在本地使用此类列表,特别是在使用LINQ时。

这可能有用的一个简单示例是:

string[] directories = Directory.GetDirectories("c:\\");
var files = directories.Select(Directory.GetFiles).ToList();

此处,files是一个List,其中包含一系列字符串:List<string[]>,这非常相似。很可能你的朋友没有特别谈论列表,你使用数组,词典或IEnumerable就像常见一样。

发布的代码没有嵌套或二维列表。 X有一个Y数组,就是这样。但是,如果您有一个X列表,那么它将具有嵌套列表:

IEnumerable<X> xfiles = GetXFiles();
foreach(X file in xfiles)
{
    foreach(Y section in file)
    {
        //...
    }
}

归结为一个简单的观点:一个对象可以容纳其他任何复杂的对象。

答案 1 :(得分:1)

它们可能表示列表列表,例如

List<List<String>> listoflists = new List<List<String>>();
listoflists.Add(new List<String>(new string[]{"One","Two"}));
listoflists.Add(new List<String>(new string[]{"A","B","C"}));