LINQ查询结果进入List

本文关键字:List 结果 查询 LINQ | 更新日期: 2023-09-27 18:07:12

我有一个叫做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;
}

Issue:当代码执行时,ComboBox1下拉只显示字符串'myMemory。Name' 9次(Recipient表中名称的个数)。我应该只是创建一个列表,并分配字符串值的列表,而不是使用一个类?

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

LINQ查询结果进入List

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

您可以通过将ComboBox1.DisplayMemberPath设置为comboName来显式地告诉ComboBox如何显示Name类的实例。

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

或者你可以像下面这样转换:

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