有人可以告诉我为什么这不会返回任何东西吗?它是错误的var temp =
部分:我没有得到任何东西。 LINQ部分:我做错了吗?
var temp = list.Select(x => x.Parent.Name == dir.Name)。ToList();
答案 0 :(得分:2)
我发现很难单独理解这些代码,但我认为你试图表达的逻辑是:
var q = from dir in parent
where IsMainBranch(dir)
where parents.Contains(dir)
join sdir in list on dir equals sdir.Parent
orderby sdir.Name
select sdir;
list2.AddRange(q);
return list2;
是吗?如果是这样,那么可以将代码编写为一堆嵌套循环,或作为查询,但不能同时同时。
请注意您无法比较DirectoryInfo的相等性:
var a = new DirectoryInfo("c:\\");
var b = new DirectoryInfo("c:\\");
Console.WriteLine(a == b); // False!
目录 infos 不是目录。我建议您修改代码,以便集合是规范目录名称的集合。
答案 1 :(得分:0)
首先,您似乎在void
方法中使用此代码。您应该重新设计方法以返回空DirectoryInfo
列表。但是,在检查目录的循环中放置return
语句似乎不正确。
其次,您使用了两种不同的Linq
方法,当您拨打OrderBy()
时,您并未将其分配给任何内容。
所以,最后。您的查询应该看起来像这样。但是,我会首先尝试重新设计该方法。请注意,我使用的是路径的全名。因为这样您可以比较对象的值而不是实例。
var temp = list.FirstOrDefault(i => i.Parent.FullName.Equals(dir.FullName))
.OrderBy(i => i.Name);