我有一个简单的 WPFToolkit DataGrid
:
<Grid>
<dg:DataGrid Name="theDataGrid"/>
</Grid>
在一个简单Contact
类后面的代码中:
public class Contact
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Contact(string firstName, string lastName)
{
this.FirstName = firstName;
this.LastName = lastName;
}
}
在后面代码的主构造函数中,我构建了一个List
集合并将其绑定到我的DataGrid
:
List<Contact> contacts = new List<Contact>();
contacts.Add(new Contact("John", "Tester"));
contacts.Add(new Contact("Jill", "Tester"));
contacts.Add(new Contact("Joe", "Tester"));
contacts.Add(new Contact("Jimmy", "Nontester"));
theDataGrid.ItemsSource = contacts;
这很好用,但是如果我像这样使用 LINQ 过滤这些联系人:
List<Contact> contacts = new List<Contact>();
contacts.Add(new Contact("John", "Tester"));
contacts.Add(new Contact("Jill", "Tester"));
contacts.Add(new Contact("Joe", "Tester"));
contacts.Add(new Contact("Jimmy", "Nontester"));
var filteredContacts = contacts.Where(contact => contact.LastName.StartsWith("T"));
theDataGrid.ItemsSource = filteredContacts;
然后我DataGrid
的被填充了,但这些字段都是空的(!)。例如,在上面的例子中,我DataGrid
的三行都是空的。奇怪的是调试的时候,filteredContacts
包含了四个项目。
如何使用 LINQ 过滤我的自定义对象并让它们显示在我的DataGrid
?