Enumerable.Aggregate(...)メソッドを使用して、セミコロンで区切られた文字列のリストを連結したいと考えています。むしろ簡単ですね。
次の点を考慮してください。
private const string LISTSEPARATOR = "; ";
- アルバム。OrderedTracksは
List<TrackDetails>
- TrackDetailsにはDiscNumber Int16 がありますか? 財産
Distinct()によって返されたシーケンスが空の場合、次のステートメントは例外をスローします( Aggregate()メソッドは空のシーケンスには適用されないため)。
txtDiscNumber.Text = album.OrderedTracks
.Where(a => a.DiscNumber.HasValue)
.Select(a => a.DiscNumber.Value.ToString())
.Distinct()
.Aggregate((i, j) => i + LISTSEPARATOR + j);
私が使用している回避策:
List<string> DiscNumbers =
album.OrderedTracks
.Where(a => a.DiscNumber.HasValue)
.Select(a => a.DiscNumber.Value.ToString())
.Distinct()
.ToList();
if (!DiscNumbers.Any())
txtDiscNumber.Text = null;
else
txtDiscNumber.Text =
DiscNumbers.Aggregate((i, j) => i + LISTSEPARATOR + j);
より良い解決策はありますか?単一の LINQ ステートメントでこれを行うことは可能ですか?
前もって感謝します。