PropertyGroupDescription未按预期工作
本文关键字:工作 PropertyGroupDescription | 更新日期: 2023-09-27 18:24:27
我在C# WPF
应用程序中使用LINQ to SQL
,并尝试使用PropertyGroupDescription
将listview
与LastNames
从SQL Server Db
分组。
我的列的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();
}
}
}
DB中的表名是Contacts
,我认为表的linq代码太多了,无法发布,所以我给出了这个名称。
我有一个数据库表的Observable Collection
,我正在将listview的itemsource绑定到它。
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的构造函数中使用硬编码的属性名称。
这个方法应该分组,然后跳过null。
public void test() {
// This line should work for grouping
var groupedContacts = Contacts.GroupBy(contact => contact.LastName);
foreach(var group in groupedContacts){
string LastName = group.Key;
if(LastName == null){
continue;
}
foreach(var person in group){
Console.WriteLine(person.FirstName);
}
}
}