0

我正在尝试做一个组合框,它不仅包含驱动器号,还包含卷标。我可以通过更改 displayMember 来获得其中一个。

我知道在它们进入组合框之前我需要使用 .Expression 来连接它们。但我很困惑。我是否应该先将 GetDrive 放入表中,然后执行表达式...然后将其加载到组合框中?

这是我必须获得一个显示成员的代码:

    cmbDestDrive.DataSource = DriveInfo.GetDrives()
       .Where(d => d.DriveType == System.IO.DriveType.Removable).ToList();
    cmbDestDrive.DisplayMember = "Name";

这显示:F:\ 我想显示F:\USB Drive

编辑:删除了一行无用的代码。

4

2 回答 2

1

你只需要Select你想要的字符串。

var drives = DriveInfo.GetDrives()
            .Where(d=>d.IsReady && d.DriveType == System.IO.DriveType.Removable)
            .Select(d => d.Name + " (" + d.VolumeLabel + ")"  )
            .ToList();

cmbDestDrive.DataSource = drives;

不需要DisplayName

于 2013-05-18T18:18:58.373 回答
0

我会尝试这样的事情:

cmbDestDrive.DataSource = DriveInfo.GetDrives()
   .Where(d => d.DriveType == System.IO.DriveType.Removable).Select(n => new { OriginalObject = n, Data = string.Format("{0}|{1}", n.Name, n.VolumeLabel)}).ToList();
cmbDestDrive.DisplayMember = "Data";

它应该可以工作(至少我认为应该可以,我无法测试它!)。

于 2013-05-18T18:17:11.203 回答