2011-07-11 14 views
9

Używam kod C# poniżej, aby wypełnić pole listy WinForm. Chcę jednak ukryć wszystkie foldery systemowe. Tak jak na przykład $ RecyclingBin. Ale daje mi następujący błąd.System.ArgumentException: Complex DataBinding akceptuje jako źródło danych IList lub IListSource

Wyjątek System.ArgumentException: Complex DataBinding akceptuje jako źródło danych IList lub IListSource.

Będąc nowością w LINQ, jest to dla mnie bardziej niż mylące. Czy ktoś może mi powiedzieć, gdzie idę źle?

string[] dirs = Directory.GetDirectories(@"c:\"); 
var dir = from d in dirs 
      where !d.StartsWith("$") 
      select d; 

listBox.DataSource = (dir.ToString()); 
+3

W takich przypadkach chciałbym powiązać [DirectoryInfo] (http://msdn.microsoft.com/en-us/library/system.io.directoryinfo.aspx) s. Łatwiej radzić sobie z nimi niż z ciągami i możesz użyć [Atrybuty] (http://msdn.microsoft.com/en-us/library/system.io.filesysteminfo.attributes.aspx), aby je filtrować. – Will

Odpowiedz

21

Zmiana:

listBox.DataSource = (dir.ToString()); 

Do:

listBox.DataSource = dir.ToList(); 

dir.ToString() po prostu wypluć jakiś opis hotelu przeliczalny, co nie jest użyteczne. Komunikat o błędzie wskazuje, że potrzebuje listy, stąd .ToList().

Powiązane problemy