我有一个名为AirportList的表,其中包含airportCode,airportName和airportCountry作为列。 在Windows应用程序表单中,我有一个组合框,我使用LinQ链接到AirportList。
我只想要组合框显示,airportName,airportCountry 这是代码:
cmbLocation.DataSource = (from A in cfse.AirportList
orderby A.airportName
select new
{
A.airportName,
A.airportCountry
}).ToList();
使用该代码,组合框显示 例如:{airportName =洛杉矶国际机场,airportCountry =美国} 并且{}符号出现在每一行。
我想成为美国洛杉矶国际机场。 我的代码有什么问题,请帮帮我
答案 0 :(得分:2)
Winforms ComboBox使用ToString方法的结果显示其项目。在您的代码中,您可以创建匿名对象,应用于这些实例的ToString会生成您的结果。
您只需声明一个仅用于组合框
的类cmbLocation.DataSource = (from A in cfse.AirportList
orderby A.airportName
select new AirportItem
{
Name = A.airportName,
Country = A.airportCountry
}).ToList();
将代码更改为
define
现在,select表达式创建了一个AirportItem类的实例,并且该类具有ToString方法的覆盖,该方法可以准确返回要在组合框中显示的内容。
答案 1 :(得分:2)
组合框没有列,因此您必须将对象转换为字符串。您可以使用Combobox的DisplayMember
属性来执行此操作。
首先,创建一个包装类:
public class Airport {
public string Name { get; set; }
public string Country { get; set; }
public string DisplayName {
get { return Name + ", " + Country; }
}
}
然后将数据放在包装类中:
cmbLocation.DisplayMember = "DisplayName";
cmbLocation.DataSource =
(from A in cfse.AirportList
orderby A.airportName
select new Airport {
Name = A.airportName,
Country = A.airportCountry
}).ToList();