のは、我々はいくつかの映画のメタデータを持っていると仮定しましょう:
class MovieMetaData
{
public string Title { get; set; }
public List<string> Categories { get; set; }
}
IEnumerable<MovieMetaData> movies = /* Some initialization. */;
Iだろうグループ2(非常に似ている)のいずれかの方法で私の作品:
var categories = movies.SelectMany(m => m.Categories).Distinct();
var groups = categories
.Select(c => Tuple.Create(c, movies
.Where(m => m.Categories.Contains(c))
.OrderBy(m => m.Title)));
foreach (var category in groups)
{
Console.WriteLine("Category: {0}", category.Item1);
foreach (var movie in category.Item2)
{
Console.WriteLine(movie.Title);
}
}
または、グループカテゴリをではなく、使用して(私はこのケースではっきりしていると感じますが、とにかくタイトルを区別しなければならないことになります)。
var categories = movies.SelectMany(m => m.Categories);
var groups = categories
.Select(c => Tuple.Create(c, movies
.Where(m => m.Categories.Contains(c))
.OrderBy(m => m.Title)))
.GroupBy(g => g.Item1);
foreach (var category in groups)
{
Console.WriteLine("Category: {0}", category.Key);
foreach (var movie in category.SelectMany(c => c.Item2).Select(m => m.Title).Distinct())
{
Console.WriteLine(movie);
}
}
(注:ここでは別のアプローチを提案しています。あなたがしようとしているものではうまくいかないかもしれませんが、私はより良い答えを得るためにもっと情報が必要だと感じています)。
もっと具体的な例を教えてください。私はあなたが*ソートしたくないと思う。私はグループ化をしたいと思う*。しかし、例がなければ言うことは難しいです。 –
最終的な宛先は「グループ化」です。しかし、開発面では、ピボットビューアーはプロパティ(StringProperty、NumericProperty、...)に使用されるデータフィールドにSort()メソッドが必要です。それはIComparableインターフェイスでSLCategoryを実装し、次にCompareToメソッドです。ですから、私の問題は、現在、CompareToメソッドを指しています。 – ducnh