2011-09-08 48 views
0

位新的这个发现重复,是否有一个ObservableCollection寻找重复的一种方式?基本上,这是我的代码:过滤和在一个ObservableCollection WPF

class Player { 
    string FirstName; 
    string SurName; 
    string Group; 
} 

private ObservableCollection<MyObj>collection; 

基本上是一个玩家可以属于多个组,所以玩家可以在 出现多次收集:如李四足球,李四棒球,李四冲浪。

我想实现的是过滤它显示一个播放器,逗号分隔组为组,就像这样:李四“的足球,棒球,冲浪”

额外的信息:观察集合被填满事先做一个WCF调用(执行上一个数据库中的存储过程和获得的结果)

感谢

回答

0

考虑使用该运营商的GroupBy一个LINQ查询这样做。

0

可以拿到分组通过在lambda表达式例如寻找做

var grouping = MyCollection.GroupBy(x => new { x.FirstName, x.SurName}) 
       .Select(group => new {group.Key, group}); 
0

首先,我想,你的类是公众一个和所有你的私人字符串字段(因为它从你的代码示例)在现实中公共属性(告诉我,如果我错了!)。 所以,你的类是这样的:

public class Player 
    { 
     public string FirstName{get; set;} 
     public string SurName{get; set;} 
     public string Group{get; set;} 
    } 

和内容类似于:由球员的名字和的string.join()

public static ObservableCollection<Player> collection = new ObservableCollection<Player> 
     { new Player{FirstName ="Alexander", SurName="Davidof", Group = "Football"}, 
     new Player{FirstName ="Alexander", SurName="Davidof", Group = "Baseball"}, 
     new Player{FirstName ="Alexander", SurName="Medvedev" , Group = "Karate"}, 
     new Player{FirstName ="Alexander", SurName="Medvedev", Group = "Polo"}}; 

使用LINQ组条目将其连接成一个单打串

 var pl = from player in collection 
       group player by new { First = player.FirstName, Second = player.SurName } into gr 
       select String.Format("{0} {1} : {2}", gr.Key.First, gr.Key.Second, String.Join(",", gr.Select(a=> a.Group))); 

如果打印这个数组

 pl.ToList().ForEach(a => Console.WriteLine(a)); 

你会看到类似于:

Alexander Davidof : Football,Baseball 
Alexander Medvedev : Karate,Polo