0

次のようなリストがあります。

 public class MyClass
 {
    public int val1;
    public long val2;
    public string val3;
 }
class Program
{
    static void Main(string[] args)
    {
        List<MyClass> lstData=new List<MyClass>
        {
            new MyClass{val1=1,val2=2,val3="AA"},
            new MyClass{val1=1,val2=2,val3="BB"},
            new MyClass{val1=3,val2=4,val3="AA"},
            new MyClass{val1=3,val2=4,val3="BB"},
            new MyClass{val1=1,val2=2,val3="BB"},
            new MyClass{val1=3,val2=4,val3="AA"},

        };
    }
}

リストから一意の行を取得したい.上記の例では、次のリストが重複しています

{val1=1,val2=2,val3="BB"}
 {val1=3,val2=4,val3="AA"}

重複する行を削除し、リストから個別の行を取得したいと考えています。どうすればそれができますか?

4

3 に答える 3

3
var result = lstData.GroupBy(x=>new {x.val1, x.val2, x.val3}, (x,y)=>y.First())
                    .ToList();                        
于 2013-08-31T09:33:09.680 に答える
2

MyClass実際のクラスが と をオーバーライドすると仮定するとEqualsGetHashCode必要なのは を追加することだけですDistinct

lstData = lstData.Distinct().ToList();
于 2013-08-31T09:33:47.027 に答える