有人可以告诉我为什么这不会返回任何东西?这是错误的var temp =
部分:我没有得到任何东西。 LINQ部分:我做错了吗?LINQ C#问题没有得到预期的输出
var temp = list.Select(x => x.Parent.Name == dir.Name).ToList();
有人可以告诉我为什么这不会返回任何东西?这是错误的var temp =
部分:我没有得到任何东西。 LINQ部分:我做错了吗?LINQ C#问题没有得到预期的输出
var temp = list.Select(x => x.Parent.Name == dir.Name).ToList();
首先,看起来您在void
方法中使用此代码。您应该重新设计方法以返回空列表DirectoryInfo
。但是,在检查目录的循环中放入return
语句似乎不正确。
其次,您正在使用两种不同的Linq
方法,并且当您调用OrderBy()
时,您不会将它分配给任何东西。
因此,最后。你的查询应该看起来像这样。但是,我会尝试首先重新设计方法。请注意,我正在使用路径的全名。因为这样比较对象的值而不是实例。
var temp = list.FirstOrDefault(i => i.Parent.FullName.Equals(dir.FullName))
.OrderBy(i => i.Name);
我发现它真的很难理解这段代码隔离,但我认为你试图表达的逻辑是:
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!
目录相关信息不目录。我建议你修改你的代码,以便这些集合是规范目录名称的集合。
''为什么这不会返回任何东西'' - 好吧,'return'语句是空的。 “catch”块也是如此,所以它基本上忽略了任何和所有的错误。 – David
您正试图比较'DirectoryInfo'对象,就好像它们是'整数'一样。 –
Your OrderBy构造一个排序查询,然后丢弃它。这段代码有很多错误。问为什么它不起作用是一个不起作用;没有理由为什么它应该工作。 –