我在 C# WPF
应用程序中使用 LINQ to SQL
,并尝试使用 PropertyGroupDescription
对 listview< 进行分组
来自 SQL Server 数据库
的 LastNames
。
我的 DB LINQ 设计器映射该列如下所示:
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastName", AutoSync=AutoSync.Always, DbType="VarChar(MAX)", IsDbGenerated=true, UpdateCheck=UpdateCheck.Never)]
public string LastName
{
get
{
return this._LastName;
}
set
{
if ((this._LastName != value))
{
this.OnLastNameChanging(value);
this.SendPropertyChanging();
this._LastName = value;
this.SendPropertyChanged("LastName");
this.OnLastNameChanged();
}
}
}
数据库中的表名称是Contacts
,我认为该表的 linq 代码有点太多,无法发布,所以我给出了名称。
我有一个数据库表的 Observable Collection
,我将 ListView 的 itemsource 绑定(bind)到它。
public ObservableCollection<Namespace.Database.Contact> Contacts
{
get;
set;
}
这是我在使用 PropertyGroupDescription 时尝试和失败的方式
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(this.Contacts);
PropertyGroupDescription groupDescription = new PropertyGroupDescription(this.Contacts.LastName); //<-- Cant do that
view.GroupDescriptions.Add(groupDescription);
由于可能会多次出现相同的姓氏,因此我想按它进行分组。
我以为我可以做到上述,但不能:
我已经尝试过:
this.Contacts.Where(x => x.LastName!= null).ToString().FirstOrDefault());
this.Contacts.Select(x => x.LastName!= null).ToString()
我做错了什么?
感谢您的帮助或回复。
最佳答案
使用
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(this.Contacts);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("LastName");
view.GroupDescriptions.Add(groupDescription);
相反。
您应该在 PropertyGroupDescription 的构造函数中使用硬编码的属性名称。
关于c# - PropertyGroupDescription 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17820730/