2

私はアプリケーションで使用LINQ to SQLしており、a から aをグループ化するために使用しようとしています。C# WPFPropertyGroupDescriptionlistviewLastNamesSQL 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いるdbテーブルがあります。

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 に答える