C# WCF-组合框中的列表
我想从列表的一个字段中获取国家名称,并将其放入组合框:C# WCF-组合框中的列表,c#,winforms,wcf,C#,Winforms,Wcf,我想从列表的一个字段中获取国家名称,并将其放入组合框: public TravelAgencyResponse GetInformation(TravelAgencyRequest request) { TravelAgencyResponse response = new TravelAgencyResponse(); // response.Offers = new OfferDto(); response.Offers = new
public TravelAgencyResponse GetInformation(TravelAgencyRequest request)
{
TravelAgencyResponse response = new TravelAgencyResponse();
// response.Offers = new OfferDto();
response.Offers = new List<DataTransferObjects.OfferDto>();
response.Offers.Add(new DataTransferObjects.OfferDto()
{
IdOffer = 0,
KindOfAccommodation = "Hotel",
Country = "Spain",
});
response.Offers.Add(new DataTransferObjects.OfferDto()
{
IdOffer = 1,
KindOfAccommodation = "Hotel",
Country = "Italy",
});
response.ThisOffer = (from offer in response.Offers
where offer.Country == request.Country
select offer).FirstOrDefault();
return response;
}
我只给出了第一个国家或类似的国家:
comboBox1.Items.Add(response.ThisOffer.Country);
comboBox1.Items.Add(response);
我什么也没得到
我使用WCF的第一步!请谅解 因此,如果我正确理解了您的问题,您希望在组合框中填入任何
响应中包含的所有国家/地区。提供的国家/地区属性,对吗
既然你提到你是WPF的新手,我将跳过这一部分,并向你展示一种利用你现在所拥有的东西来完成它的方法
首先,您需要从优惠中“提取”所有国家/地区,最好只提取一次并按字母顺序排序
List<string> countries = response.Offers
.Select(o => o.Country) // We only need the "Country" of the offer
.Distinct() // Every country only once
.OrderBy(c => c) // Sort by name
.ToList(); // make a List<string> out of it
但是,您需要确保项
为空,手动添加的项和数据源
不能很好地协同工作
如果您想预先选择某个国家(例如,ThisOffer
中的国家),您可以设置组合框的SelectedItem
属性:
comboBox1.SelectedItem = response.ThisOffer.Country;
但我无法对数据使用列表-\uError无法将类型“System.Linq.iorderenumerable”隐式转换为“System.Collections.Generic.List”。存在显式转换(是否缺少转换?),我得到的信息是ComboBox不包含ItemsSource的定义,DataSource是否相同?@KlaudiaW。我更新了声明,您也需要调用ToList
,因为ComboBox
没有包含项的定义来源:我以为您在使用WPF,我的错误。是的,您应该能够使用数据源
,我将更新答案。
comboBox1.DataSource= countries;
comboBox1.SelectedItem = response.ThisOffer.Country;