C# 将查询结果放入列表
我有一个名为Name的类,它有一个属性C# 将查询结果放入列表,c#,wpf,visual-studio-2013,C#,Wpf,Visual Studio 2013,我有一个名为Name的类,它有一个属性 public class Name { public string comboName { get; set; } } 我试图运行LINQ查询以返回所有FullName,然后为每个查询创建Name类的实例,将FullName分配给属性comboName。实例被添加到列表中,然后我希望列表值被添加到ComboBox1下拉列表值中。下面是到目前为止我编写的代码 void ComboBox1_Loaded(object sender, RoutedEv
public class Name
{
public string comboName { get; set; }
}
我试图运行LINQ查询以返回所有FullName,然后为每个查询创建Name类的实例,将FullName分配给属性comboName。实例被添加到列表中,然后我希望列表值被添加到ComboBox1下拉列表值中。下面是到目前为止我编写的代码
void ComboBox1_Loaded(object sender, RoutedEventArgs e)
{
GiftIdeasDataContext dc = new GiftIdeasDataContext();
var qry = from r in dc.Recipients
select new Name()
{
comboName = r.FullName
};
List<Name> lst = qry.ToList();
ComboBox1.ItemsSource = lst;
}
问题:执行代码时,ComboBox1下拉列表仅显示字符串“myMemory.Name”是收件人表中名称数的9倍。我是否应该创建一个列表并为列表分配字符串值,而不是使用类
到目前为止,我只在c中使用控制台窗口,这是我第一个使用WPF的项目,非常感谢您的帮助
List<Name> lst= from r in dc.Recipients
select new Name()
{
comboName = r.FullName
}.ToList<Name>();
或者,您可以按如下方式进行转换:
List<Name> lst = (List<Name>)qry.ToList();
组合框需要知道如何显示名称类的实例。由于您没有明确告诉它,它使用Name.ToString来显示您的名称实例
通过将ComboBox1.DisplayMemberPath设置为comboName,您可以显式告诉ComboBox如何显示Name类的实例。请参见此问题。。还可以在调试时查看DisplayMemberPath,SelectedValuePath for ComboBox,如果在ComboBox1.ItemSource=lst;该列表包含9个值,它们是“myMemory.Name”。。如果我单击“索引”下拉列表,它会显示comboName,然后是我希望看到的实际值。对解决方案进行一些解释总是有帮助的
var lst = dc.Recipients.Select(r => new Name{ comboName = r.FullName }).ToList();