我想使用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 语句中执行此操作?
提前致谢。