我在LINQ to SQL
应用中使用了C# WPF
,我正在尝试使用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();
}
}
}
数据库中的表名是Contacts
,我认为该表的linq代码有点太多了,所以我给了这个名字。
我有一个Observable Collection
的db表,我将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()
我做错了什么?
感谢您提供任何帮助或回复。
答案 0 :(得分:1)
使用
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(this.Contacts);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("LastName");
view.GroupDescriptions.Add(groupDescription);
代替。
您应该在PropertyGroupDescription的构造函数中使用硬编码属性名称。
答案 1 :(得分:1)
此方法应分组,然后跳过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);
}
}
}