有人可以告訴我爲什麼這不會返回任何東西?這是錯誤的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構造一個排序查詢,然後丟棄它。這段代碼有很多錯誤。問爲什麼它不起作用是一個不起作用;沒有理由爲什麼它應該工作。 –