C# 是否可以将listbox数据源设置为List<;元组<;字符串,字符串,int>&燃气轮机;只有第1项?

C# 是否可以将listbox数据源设置为List<;元组<;字符串,字符串,int>&燃气轮机;只有第1项?,c#,list,tuples,datasource,C#,List,Tuples,Datasource,我有 问题是它显然会将([string]、[string]、[int])添加到列表框中,但我只想添加元组的第一项。可能吗 我可以用 listBox1.DataSource = GlobalVariables.PopFile; foreach(GlobalVariables.PopFile中的元组i) { 列表框1.Items.Add(i.Item1); } 但是我更喜欢.DataSource。最后,您无法真正避免循环,或者从元组对象中单独添加数据,或者创建一个新对象绑定到列表框 除非您自己扩

我有

问题是它显然会将([string]、[string]、[int])添加到列表框中,但我只想添加元组的第一项。可能吗

我可以用

listBox1.DataSource = GlobalVariables.PopFile;
foreach(GlobalVariables.PopFile中的元组i)
{
列表框1.Items.Add(i.Item1);
}

但是我更喜欢.DataSource。

最后,您无法真正避免循环,或者从元组对象中单独添加数据,或者创建一个新对象绑定到列表框

除非您自己扩展Listbox对象以便能够适当地处理它,否则Listbox没有输入参数来接收元组对象,但即使这样,您仍然必须执行与上面的循环类似的操作

foreach (Tuple<string, string, int> i in GlobalVariables.PopFile)
{
    listBox1.Items.Add(i.Item1);
}

林克可能会派上用场

listBox1.DataSource = GlobalVariables.PopFile;
listBox1.DisplayMember = "Item1";
listBox1.ValueMember = "Item3";   // optional

这是ASP.NET WebForms还是WinForms?使用
ListBox.DisplayMember
属性。对于
.PopFile.ConvertAll(t=>t.Item1),List有更有效的方法
listBox1.DataSource = GlobalVariables.PopFile;
listBox1.DisplayMember = "Item1";
listBox1.ValueMember = "Item3";   // optional
listBox1.DataSource = GlobalVariables.PopFile.Select(t => t.Item1).ToList()