C# 将查询结果放入列表

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

我有一个名为Name的类,它有一个属性

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();