2

LINQ to SQL在一个C# WPF应用程序中使用,我正在尝试使用从 a中对 a进行PropertyGroupDescription分组。listviewLastNamesSQL 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 Collectiondb 表,我将 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()

我究竟做错了什么?

感谢您的任何帮助或回复。

4

2 回答 2

1

利用

CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(this.Contacts);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("LastName");  
view.GroupDescriptions.Add(groupDescription);

反而。

您应该在 PropertyGroupDescription 的构造函数中使用硬编码的属性名称。

于 2013-07-23T20:50:58.363 回答
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);
            }
        }

    }
于 2013-07-23T21:01:46.620 回答