LINQ查询结果进入List

时间:2015-08-09 10:23:10

标签: c# wpf visual-studio-2013

我有一个名为Name的班级,有一个属性。

public class Name
{
    public string comboName { get; set; }
}

我正在尝试运行LINQ查询以返回所有FullName,然后为每个Name类创建一个实例,将FullName分配给属性comboName }。实例会添加到List,然后我希望将List值添加到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次(Recipient中的名称数量表)。我应该只创建一个列表并将字符串值分配给列表而不是使用类吗?

到目前为止,我一直只使用c#的控制台窗口,这是我使用WPF的第一个项目,所以感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

ComboBox需要知道您希望如何显示Name课程的实例。由于您没有明确说明,它使用Name.ToString()来显示您的Name个实例。

您可以通过将ComboBox设置为Name,明确告诉ComboBox1.DisplayMemberPath如何显示comboName课程的实例。

答案 1 :(得分:0)

   List<Name> lst= from r in dc.Recipients
                   select new Name()
                   {
                    comboName = r.FullName
                   }.ToList<Name>();

或者您可以转换如下:

List<Name> lst = (List<Name>)qry.ToList();

答案 2 :(得分:0)

var lst = dc.Recipients.Select(r => new Name{ comboName = r.FullName }).ToList();