1

私はこのIEnumerableを持っています:

var collection = from obj in list
                        select new
                        {
                            Title = (string)obj.Element("title"),
                            otherAtt = (string)obj.Element("otherAtt"),
                            ..
                            ..
                            ..
                            ..
                        };

そして、タイトルが重複している「コレクション」内のすべてのオブジェクトを削除したいと思います。そして、重複した最後のものを残すために。

例えば:

collection = {
    {Title="aaa" ,otherAtt="1" ,....},
    {Title="bbb" ,otherAtt="2" ,....},
    {Title="aaa" ,otherAtt="3" ,....},
    {Title="aaa" ,otherAtt="4" ,....},
    {Title="ccc" ,otherAtt="5" ,....},
    {Title="bbb" ,otherAtt="6" ,....}
}

そして、フィルターによってコレクションが次のように見えるようにする必要があります。

collection = {
    {Title="aaa" ,otherAtt="4" ,....},
    {Title="ccc" ,otherAtt="5" ,....},
    {Title="bbb" ,otherAtt="6" ,....}
}

ありがとう。

4

2 に答える 2

0

拡張メソッドを使用できますがDistinct()、比較に Title が使用されるように IEqualityComparer を記述する必要があります。

これは必要なものにかなり近いと思います:http://forums.asp.net/post/2276937.aspx

于 2012-04-27T17:19:22.497 に答える
0

以下が機能します。

var noDuplicateTitles = collection
   .GroupBy(obj => obj.Title)
   .Select(group => group.Last())

同じタイトルのすべてのオブジェクトがグループ化され、各グループから最後のアイテムが取得されます。

于 2012-09-02T19:19:40.967 に答える